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;
        }
    }
}
View Code

 

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
View Code

 

 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)
View Code

 

 

 

 

    

 

posted @ 2021-11-30 18:03  奋斗吧&#128663;少年  阅读(228)  评论(2)    收藏  举报