openresty和redis安装使用
操作系统: CentOS Linux release 7.6.1810 (Core)
1 安装openresty
参考:https://openresty.org/cn/linux-packages.html#centos进行安装
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/
sudo yum check-update
sudo yum install -y openresty
安装完成后置行: service openresty start,然后访问:http://ip/,看到如下页面就安装完成
nginx.conf配置:

#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream nacos {
server 3.3.3.25:8848;
}
upstream jwt {
server 6.6.6.45:9091;
}
server {
listen 1111;
server_name 5.5.5.5;
location /nacos {
default_type text/html; charset utf-8;
proxy_pass http://nacos;
}
location /luaresty {
default_type text/html; charset utf-8;
content_by_lua_file /root/tools/redis.lua;
}
location ^~ /api/jwt {
default_type text/html; charset utf-8;
proxy_pass http://jwt;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2 安装redis
访问http://redis.cn/下载,这里下载redis 6.0.6 版本,下载完成后上传到linxu机器上
tar -zxvf redis-6.0.6.tar.gz
yum install gcc
yum install gcc-c++
下面的操作为升级gcc版本,安装redis6版本需要执行
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash ---使上面的版本升级临时有效
下面的命令可以使升级重启后生效:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
下来进行编译:
make
编译完成后,切换到src目录执行./redis-server启动redis
如果redis安装完成后要配置密码登陆,则需要修改redis.conf,设置:requirepass admin@123,设置完成后重新启动redis;通过如下方式连接:
3 openstry获取请求参数

[root@sf1 conf]# cat /root/tools/test.lua ngx.say("获取uri参数<br/>") local uri_args=ngx.req.get_uri_args() for k, v in pairs(uri_args) do if type(v) == "table" then ngx.say(k, " : ", table.concat(v, "-"), "<br/>") else ngx.say(k, " : ", v, "<br/>") end end ngx.say("<br/>") ngx.say("获取header参数<br/>") local headers=ngx.req.get_headers() ngx.say("Host : ", headers["Host"], "<br/>") ngx.say("user-agent : ", headers["user-agent"], "<br/>") for k, v in pairs(headers) do if type(v) == "table" then ngx.say(k, " : ", table.concat(v, ", "), "<br/>") else ngx.say(k, " : ", v, "<br/>") end end ngx.say("<br/>") ngx.req.read_body() ngx.say("post arg: ", "<br/>") 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, ", "), "<br/>") else ngx.say(k, " : ", v, "<br/>") end end
4 lua脚本链接redis

local redis=require "resty.redis" local redis_ins=redis:new() local ok, err=redis_ins:connect("3.3.3.3", 6379) redis_ins:auth("admin@123") if not ok then ngx.say("Failed to connect: ", err) return end local reqK local reqV local uri_args=ngx.req.get_uri_args() for k, v in pairs(uri_args) do if k == "id" then reqK=v end if k == "value" then reqV=v end end ngx.say("request key: " .. reqK) ngx.say("request value: " .. reqV) ok, err=redis_ins:set(reqK, reqV) redis_ins:expire(reqK, "60000") if not ok then ngx.say("Failed to set key: "..reqK, err) return end ngx.say("set result: ", ok) ngx.say("<br/>====================set result========================<br/>") local res, err=redis_ins:get(reqK) if not res then ngx.say("get redis key error!") return end if res == ngx.null then ngx.say("redis key info is null") return end ngx.say("reqK info: ", res)