Openresty 快速入门
1、动态输出
打开E:\study\openresty\openresty-1.19.9.1-win64 目录下的 conf/nginx.conf 文件
在server中增加一下代码
location /hello {
default_type text/html;
content_by_lua 'ngx.say("hello, world
")';
}
运行后,效果如下图 localhost/hello
2、优化动态输出
上面的代码直接把lua代码写在nginx配置里面了,维护起来不方便。 我们把它拿出来一个单独的文件,放到E:\study\openresty\openresty-1.19.9.1-win64/lua目录下。
新建lua/hello2.lua
ngx.say("hi,world
")
配置如下
location / {
default_type text/html;
content_by_lua_file lua/hello2.lua;
}
重启nginx nginx -s reload
验证: localhost
上面lua文件是固定的,如何动态指定lua文件名.
1) 增加配置
location ~ /lua/(.+) {
default_type text/html;
content_by_lua_file lua/$1.lua;
}
2、增加lua/one.lua
ngx.print("hi,one
")
增加lua/tow.lua
ngx.print("hi,two
")
3、验证
localhost/lua/one
localhost/lua/two
3、接收参数
1 ) lua/req.lua 文件
支持GET、POST两种参数
local _M = {}
-- 获取http get/post 请求参数
function _M.getArgs()
-- 获取http请求方式 GET or POST
local request_method = ngx.var.request_method
-- 这里是一个table,包含所有get请求参数
local args = ngx.req.get_uri_args()
-- 如果是post参数获取
if "POST" == request_method then
-- 先读取请求体
ngx.req.read_body()
-- 这里也是一个table,包含所有post请求参数
local postArgs = ngx.req.get_post_args()
if postArgs then
for k, v in pairs(postArgs) do
args[k] = v
end
end
end
return args
end
return _M
2)conf/nginx.conf 添加
http {
# 这里一定要指定package_path,否则会找不到引入的模块,然后会500
lua_package_path E:\study\openresty\openresty-1.19.9.1-win64\lua\?.lua;
server {
listen 80;
server_name localhost;
location ~ /lua/(.+) {
default_type text/html;
content_by_lua_file lua/$1.lua;
}
}
3) 创建lua/test.lua 文件
-- 引入req模块
local req = require "req"
-- 获取请求参数列表
local args = req.getArgs();
-- 获取key为name的值
local name = args['name']
-- 如果不存在指定默认值
if name == nil or name == "" then
name = "default name zhang san"
end
-- 输出结果
ngx.say("hello " .. name .. "!
")
4)验证
http://localhost/lua/test?name=nick