目录
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty 官网地址:https://openresty.org/cn/。
OpenResty主要包含两方面的技术:
下载地址:OpenResty - 下载
最小版本基于nginx1.21
然后在进入 openresty-VERSION/
目录, 然后输入以下命令配置:
- ./configure --prefix=/usr/local/openresty
- make
- make install
默认, --prefix=/usr/local/openresty 程序会被安装到/usr/local/openresty目录。
依赖 gcc openssl-devel pcre-devel zlib-devel
安装:yum install gcc openssl-devel pcre-devel zlib-devel postgresql-devel
可以指定各种选项,比如:
- ./configure --prefix=/opt/openresty \
-
- --with-luajit \
-
- --without-http_redis2_module \
-
- --with-http_iconv_module \
-
- --with-http_postgres_module
启动
Service openresty start
或者
- cd /usr/local/openresty/nginx/sbin
- ./nginx -c /usr/local/openresty/nginx/conf/nginx.conf #启动前修改配置文件端口号以防和原nginx冲突
停止
Service openresty stop
- #在Nginx.conf 中写入
- location /lua {
-
- default_type text/html;
- content_by_lua '
- ngx.say("
Hello, World!
") - ';
- }
如果想不在配置文件写lua,可以引入lua文件:nginx目录下的lua/hello.lua
content_by_lua_file lua/hello.lua;
创建配置文件lua.conf(没必要采用引入方式,直接在nginx配置文件中写location /lua 即可)
- server {
- listen 80;
- server_name localhost;
-
- location /lua {
- default_type text/html;
- content_by_lua_file lua/hello.lua;
- }
- }
nginx+lua开发时因为已经加载进内存,修改lua脚本不会起作用,这样不方便调试。nginx配置中将lua_code_cache配置成on/off来控制是否关闭lua 的cache缓存,如果设置为off.则每次修改lua脚本都会重新加载新的lua代码,从而实现快速调试响应。同时状态为off时启动或重启nginx都会提示:nginx: [alert] lua_code_cache is off; this will hurt performance in /path/to/nginx.conf。因为这会影响nginx性能表现。
- server{
- lua_code_cache off; //关闭lua缓存 重启后生效
- server_name localhost;
- default_type 'text/plain';
- content_by_lua_file /conf/lua/test.lua; //将lua程序用file文件加载
- }
http协议版本
ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "
")
请求方法
ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "
")
原始的请求头内容
ngx.say("ngx.req.raw_header : ", ngx.req.raw_header(), "
")
body内容体
ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), "
")
获取Nginx请求头信息
- local headers = ngx.req.get_headers()
-
- ngx.say("Host : ", headers["Host"], "
") -
- ngx.say("user-agent : ", headers["user-agent"], "
") -
- ngx.say("user-agent : ", headers.user_agent, "
") -
- for k,v in pairs(headers) do
-
- if type(v) == "table" then
-
- ngx.say(k, " : ", table.concat(v, ","), "
") -
- else
-
- ngx.say(k, " : ", v, "
") -
- end
-
- end
获取post请求参数
- ngx.req.read_body()
-
- ngx.say("post args begin", "
") -
- local post_args = ngx.req.get_post_args()
-
- for k, v in pairs(post_args) do
-
- if type(v) == "table" then
-
- ngx.say(k, " : ", table.concat(v, ", "), "
") -
- else
-
- ngx.say(k, ": ", v, "
") -
- end
- end