yum install -y epel-release
yum update
yum search openresty # 查看是否有可用包
yum install -y openresty
启动systemctl start openresty
验证服务状态systemctl status openresty
设置开机自启systemctl enable openresty
systemctl stop openresty # 停止服务
systemctl restart openresty # 重启服务
systemctl reload openresty # 重载配置(无需重启服务)
使用
nginx配置文件
location / {
root html;
index index.html index.htm;
//直接使用
//content_by_lua_block {
// ngx.say("Hello, OpenResty!")
// ngx.var.uri获得请求地址
// ngx.say("Request URI: ", ngx.var.uri)
// }
//lua文件
content_by_lua_file "/usr/local/openresty/nginx/conf/lua/app.lua";
}
app.lua
-- 获取请求参数
local args = ngx.req.get_uri_args()
-- 设置响应头
ngx.header.content_type = "application/json; charset=utf-8"
ngx.say('{"code":2006,"data":[],"message":"请求成功"}')
使用解密
安装
yum install openresty-opm
安装
opm get SkyLothar/lua-resty-jwt
引入
local jwt = require("resty.jwt")
使用
local secret = "wbrj" -- JWT签名密钥
local jwt_obj = jwt:verify(secret, headers["token"])
完整案例app.lua文件
-- 获取请求参数
local args = ngx.req.get_uri_args()
-- 设置响应头
ngx.header.content_type = "application/json; charset=utf-8"
-- 引入JSON编码库
local cjson = require("cjson")
local uri = ngx.var.uri
-- 定义不需要拦截的路径数组
local whitelist = {
"/main/admin/login",
"/main/admin/wbUrl", --App绑定域名
"/main/accset/select", --获得套账数
"/main/accset/select", --获得套账数
"/wbrjPys/accset/select",--获得套账数
"/wbrjPys/static" -- 静态文件
}
-- 检查URI是否在白名单中
local in_whitelist = false
for _, path in ipairs(whitelist) do
if string.find(uri, path) then
in_whitelist = true
break
end
end
-- 如果在白名单中,直接放行
if in_whitelist then
return
end
-- 获取所有请求头信息
local headers = ngx.req.get_headers()
-- 使用Lua表构建响应数据,code是2006
local response = {
code = 2001,
data = {},
message = "签权失败",
uri = headers['token']
}
local jwt = require("resty.jwt")
-- 检查请求头中是否存在token字段
if headers["token"] and headers["token"] ~= "" then
-- 使用示例
local secret = "dade" -- JWT签名密钥
local jwt_obj = jwt:verify(secret, headers["token"])
response['valid'] = jwt_obj
ngx.say(cjson.encode(response))
else
--自动编码为JSON字符串,自动处理转义
ngx.say(cjson.encode(response))
end