前言
OpenResty —— 通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台。
OpenResty(也称为 ngx_openresty)是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发,),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
1:准备
下载地址: http://openresty.org/cn/download.html ( 这里下载是win64版最新版)
2:配置
openresty-1.21.4.1-win64\conf\nginx.conf 拷贝个 改名 nginx_debug.conf 这样方便测试
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
lua_package_path "j:/temp/nginx_lua/openresty-1.21.4.1-win64/src_lua/?.lua;j:/temp/nginx_lua/openresty-1.21.4.1-win64/lualib/?.lua;;"; #lua模块
lua_package_cpath "j:/temp/nginx_lua/openresty-1.21.4.1-win64/lualib/?.so;;"; #c模块
server {
#listen 127.0.0.1:9002;
listen 0.0.0.0:9002;
lua_code_cache off; ###lua_code_cache on;#调试模式(即关闭lua脚本缓存) //生产环境 on #修改lua文件不需要重新,立即生效
keepalive_timeout 60s; # 配置段: http, server, location 指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,
#有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。
client_body_timeout 20s;# 配置段: http, server, location 指定客户端与服务端建立连接后发送 request body 的超时时间。
#如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)
client_header_timeout 10s;# 配置段: http, server, location 客户端向服务端发送一个完整的 request header 的超时时间。
#如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)
location /lua {
#根目录j:/temp/nginx_lua/openresty-1.21.4.1-win64
content_by_lua_file src_lua/HelloLua.lua; #相对 根目录的 路径
}
location /testlua {
proxy_set_header X-real-ip $remote_addr; # 可直接获取客户端IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 通过代理服务器获取客户端IP
#lua_code_cache off; ###lua_code_cache on;#调试模式(即关闭lua脚本缓存) //生产环境 on
content_by_lua_file src_lua/http.lua;
}
location /testluapost {
#lua_code_cache off; ###lua_code_cache on;#调试模式(即关闭lua脚本缓存) //生产环境 on
content_by_lua_file src_lua/http_post.lua;
}
location /test {
# default_type text/html;
content_by_lua '
ngx.say("<p>Hello, World!</p>")
';
}
}
}
3:运行
http.lua
local function getrealip()
local headers=ngx.req.get_headers()
local ip=headers["X-REAL-IP"] or headers["X_FORWARDED_FOR"] or ngx.var.remote_addr or "0.0.0.0"
return ip
end
local function main()
local realip = getrealip()
ngx.say("realip:",realip)
ngx.say("http.lua_4")
local arg = ngx.req.get_uri_args()
for k, v in pairs(arg) do
ngx.say(k .. "-" ..v)
end
end
main()
nginx -p ./ -c conf/nginx_debug.conf #启动
//重启Nginx进程,发送reload信号
nginx -p ./ -c nginx-debug.conf -s reload
//停止nginx进程,发送stop信号
nginx -p ./ -c nginx-debug.conf -s stop
浏览器执行
http://127.0.0.1:9002/testlua?name=aaa&age=12&test=‘test’
4:后续
以此为基础,改造下php的登录
如果觉得有用,麻烦点个赞,加个收藏