OpenResty ™ 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
以上是从官网拷过来的原话,我们通过写一个hello world,来走进openresty开发之旅
**下载地址**
http://openresty.org/cn/download.html
有的人不会下windows版,所以我这里直接给出下载地址,现在是最新版本,学会了之后,可以自己下载
mac、linux 平台
https://openresty.org/download/openresty-1.11.2.2.tar.gz
windows平台
https://openresty.org/download/openresty-1.11.2.2-win32.zip
**关于安装**
mac、linux安装看这里 http://openresty.org/cn/installation.html
windows 直接之后直接启动就可以了,不用安装
安装完之后别着急启动
**开始写代码了**
打开nginx目录下的conf/nginx.conf文件
在server中新增以下代码
```
location /hello {
default_type text/html;
content_by_lua '
ngx.say("hello, world
")
';
}
```
类似这样
```
http {
server {
listen 80;
server_name localhost;
location / {
default_type text/html;
content_by_lua '
ngx.say("hello, world
")
';
}
}
}
```
现在启动nginx,然后访问 http://localhost/hello,不出意外的话应该就OK了,如果你之前启动了,那么需要reload一下,nginx的基本操作这里就不介绍了
通过**ngx.say** 我们可以往客户端输出响应文本,在整个request周期内可以多次调用,接受的参数是字符串,如果输出table会报错
还有一个输出的函数是**ngx.print**,同样也是输出响应内容
这里有一个**坑**,就是调用ngx.say会在输出我们的内容之后会额外输出一个换行,但是ngx.print就不会,我之前一个同事用lua输出了一个200,然后前端用ajax调用,判断是否200,死活是false,看输出的内容就是200,差点怀疑人生,幸亏我比较机智,直接查看ajax请求源码,发现行号多了一行,就是那个换行,如果不仔细根本看不出来,这个坑被我一个同事踩了
上面的代码直接把lua代码写到nginx配置里面了,维护起来不是很方便,而且写代码的时候也没有语法高亮,提示这些,比较蛋疼,我们把它拿出来一个单独的文件,并放到一个nginx下面单独的lua目录下,方便管理
lua/hello.lua
```
ngx.say("hello, world
")
```
nginx.conf 改成这样
```
location / {
default_type text/html;
content_by_lua_file lua/hello.lua;
}
```
然后nginx reload 一下,再看效果,应该是一样的
我们修改一下hello.lua,在hello,world后面加一个!号,刷新浏览器发现没有任何变化,这是因为lua代码被缓存了,这就导致我们修改代码,就必须reload nginx 在能看到效果,如果是这样,那简直要疯了,其实要解决这个问题很简单,只要在nginx.conf里面把lua缓存给禁止掉就行了,当然在生产线上一定要把缓存打开,不然效果大打折扣
禁止lua缓存
```
server {
listen 80;
server_name localhost;
lua_code_cache off; # 这个可以放在server下面,也可以凡在location下面,作用的范围也不一样,为了简单直接放这里了
location / {
default_type text/html;
content_by_lua_file lua/hello.lua;
}
}
```
改完之后reload一下nginx,这里**重点声明**一下修改nginx配置必须要reload,否则是没有效果的
现在我们再改hello.lua,然后刷新浏览器就会发现可以实时生效了
观察以上代码其实还会发现一个问题,如果我们想要处理很多个请求,那不是要在nginx里面配置N个location吗,我们肯定不会这么做,这里可以通过nginx正在匹配动态指定lua文件名,即可完成我们的需求,后台我再介绍如何打造一个属于我们的mvc轻量级框架,这里我们先这么做
location 改成这样
```
location ~ /lua/(.+) {
content_by_lua_file lua/$1.lua;
}
```
reload nginx
这个时候访问hello world的请求url就变成了
http://localhost/lua/hello 了
同理,我们在lua文件里面创建一个welcome.lua的话,就可以通过
http://localhost/lua/welcome 来访问了
以此类推,我们就可以通过新增多个文件来处理不同的请求了,而且修改了还能实时生效,剩下的就是完成业务代码了,比如调一下redis返回数据,或者mysql之类的,有悟性的同学在这里已经可以做很多事情了
分享到:
相关推荐
本项目是我写的一系列openresty web 前端开发文章的实例demo,方便测试运行,喜欢请点↑↑↑右上角Star↑↑↑ 文章目录 openresty 前端开发进阶三之后端整合二 openresty 前端开发进阶四之session篇 openresty 前端...
《OpenResty官方学习资料》是一份由章亦春编写的综合教程,旨在帮助开发者从初识到精通OpenResty这一强大的Web服务框架。OpenResty是基于Nginx和LuaJIT的开源项目,它将Nginx的高性能与Lua的轻量级脚本能力相结合,...
OpenResty 是一个基于 Nginx 和 LuaJIT 的高性能 Web 平台,它通过提供一个集成了大量 Lua 库的 Nginx 模块,使得开发者可以在 Nginx 中直接使用 Lua 语言编写逻辑处理代码。OpenResty 的优势在于其高性能和灵活性,...
OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web ...
OpenResty是一套基于Nginx和LuaJIT的高性能Web平台,它将Lua语言和Nginx模块化设计的优点...它为那些对Web前端开发、网关开发以及限流代理服务器开发感兴趣的读者提供了宝贵的指导,同时也为OpenResty社区做出了贡献。
通过揉和众多设计良好的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,基于它开发人员可以使用 Lua 编程语言对 Nginx 核心以及现有的各种 Nginx C 模块进行脚本编程,构建出可以...
在OpenResty中,Lua环境的搭建是入门的基础,包括了对Lua基础语法的学习,如数据类型、表达式、控制结构、函数定义、模块化编程等。这要求开发者熟悉Lua语言的核心特性,比如它的基本数据类型(字符串、数字、布尔值...
OpenResty是一种基于Nginx的高性能Web平台,它通过集成LuaJIT来为Nginx提供强大的可编程能力。OpenResty允许开发者以极高的性能实现复杂的Web应用,且能够处理数以万计的并发连接。因此,OpenResty在处理大量HTTP...
OpenResty 是一个基于 Nginx 的 Web 服务器,它提供了许多有用的功能,例如 Lua 脚本、SSL/TLS 支持、Websocket 支持等。OpenResty 是 Kong 的一个重要组件,它提供了 Kong 的核心功能。 Mashape 是 Kong 的背后...
本章将深入讲解如何安装OpenResty开发环境,帮助你搭建起一个基于Nginx的动态、高性能Web应用程序平台。 首先,我们要了解OpenResty是什么。OpenResty是一个开源项目,它集成了Nginx服务器和LuaJIT,允许开发者在...
PGW(Proxy Gateway) Proxy Gateway基于openresty(nginx-lua-module)开发,可以作为接口网关(api gateway)使用,整合业务模块接口,微服务治理聚合,通过web配置界面,能够轻松进行代理配置管理,支持负载均衡...
书籍涵盖了多个知识点,从最基础的Lua脚本语言学习,到OpenResty的高级使用,为读者提供了一条从入门到进阶的学习路径。以下是书中提到的一些关键知识点的详细说明。 ### Lua脚本入门 Lua是一种轻量级的脚本语言,...
OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的...
OpenResty 是一个基于 Nginx 的高性能、全功能的 Web 应用服务器和开发平台,它集成了 LuaJIT 脚本语言,允许开发者在 Nginx 的配置文件中直接编写 Lua 脚本来实现复杂的业务逻辑。本次我们关注的是 OpenResty 的...
总之,OpenResty 1.25.3.1是一个强大的Web开发框架,它融合了Nginx的高性能和Lua的灵活性,为构建高性能、高并发的Web应用提供了理想平台。通过深入了解和熟练使用OpenResty,开发者可以实现高效、可扩展的服务架构...
- **定义**:OpenResty是一款基于Nginx与Lua的高性能Web平台,它使得开发人员能够轻松地编写出高性能、高可靠性的Web应用程序和服务。 - **特点**: - 集成了强大的Nginx核心和许多有用的Nginx模块。 - 支持丰富的...
OpenResty是一款基于Nginx与LuaJIT的高性能Web平台,它集成了大量开源的高性能库,使得开发者能够利用Lua脚本语言快速构建出强大的动态Web应用。在这个压缩包"openresty-1.19.9.1.tar.gz"中,包含的是OpenResty的...
OpenResty是一种基于Nginx的开源Web服务器软件,它提供了强大的Web开发和部署能力。基于OpenResty的百万级长连接推送系统设计,需要解决高并发、大规模连接和实时推送等挑战。下面是基于OpenResty的百万级长连接推送...
OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 应用开发平台,它集成了 LuaJIT,并且提供了大量的库模块,使得开发者能够利用 Lua 脚本语言快速构建出高性能的动态 web 应用。在 `openresty-1.21.4.1-win64.zip` ...