承接上一节内容,我们继续。。。
三、Nginx配置、Lua的编写、成果测试
1、配置nginx
vim /usr/local/openresty/nginx/conf/nginx.conf #nginx配置文件路径
#nginx.conf 配置如下
worker_processes 2; #指定工作进程个数
events {
worker_connections 150000; #设置连接上限
}
http {
default_type application/octet-stream; #设置二进制流类型
sendfile on; #开始高效文件传输
gzip on; #开启压缩功能,节省宽带
server
{
listen 80; #监听端口号
server_name localhost; #域名
location /luatest { #若请求该字段,运行如下lua脚本
content_by_lua_file /usr/local/openresty/lualib/test/test.lua; #这一条很重要。。。。
}
}
}
2、编写Lua脚本
——这里要注意的一点就是,所有命令都要加sudo,否则会提示权限不够。
#首先在lualib下建立test/test.lua,用于测试
cd /usr/local/openresty/lualib
mkdir test
cd test
touch test.lua
sudo chmod 777 test.lua
# test.lua 编写如下
local args=nil
local request_method = ngx.var.request_method #获取前端传递的参数
if"GET" == request_method then #判断是否为 GET 请求
args = ngx.req.get_uri_args() #获取args参数
ngx.say("this is get")
ngx.say("user = "..args["user"]) #打印获取到的用户名
ngx.say("id = "..args["id"]) #打印获取到的id
elseif "POST" == request_method then #判断是否为 POST 请求
ngx.say("this is post")
--ngx.req.read_body() #本次我们用header传递,不涉及此函数。
args = ngx.req.get_post_args() #获取参数
ngx.say("name = "..args["name"]) #打印获取到的姓名
ngx.say("age = "..args["age"]) #打印获取到的年龄
end
ngx.say("Test End!")
3、成果测试
——每当修改配置文件之后,都需要重启nginx,命令如下:
# 平滑重启 O(∩_∩)O
cd /usr/local/openresty/nginx/sbin
sudo ./nginx -s reload
#这里没有添加环境变量,如果设置了环境变量,就可以随时随地 nginx 了
——GET测试
# 执行curl 模拟 GET 请求,注意格式!
curl http://localhost/luatest?"user=me&id=123"
# GET请求 响应
This is GET
user = me
id = 123
Test End
——POST测试
# 执行curl 模拟 POST 请求,注意格式!
curl http://localhost/luatest -d "name=dog&age=20"
# POST请求 响应
This is POST
name = dog
age = 20
Test End
4、总结
——梳理一下整个过程:首先用curl 命令模拟http请求访问nginx(curl http://localhost/luatest?"user=me&id=123"),nginx通过nginx.conf配置文件中的字段( location /luatest)与http请求匹配,接着执行提前编写好的Lua脚本,本文中Lua脚本的作用也就是解析http请求传递过来的参数(user/id),大概过程就是如此。
以上记录了一次完整的测试过程,因为细节太多,难免有不足的地方,欢迎大家指出。