nginx+Lua环境集成、nginx+Lua应用

nginx+lua+redis实践

概述

nginx、lua访问redis的三种方式:

1。 <HttpRedis>模块。

指令少,功能单一 ,适合简单的缓存。只支持get 、select命令。

2。 <HttpRedis2Module>模块。

功能强大,比较灵活。

3。 lua-resty-redis库

OpenResty。api。适合复杂业务,节省内存。

OpenResty:基于nginx开源版本的一个扩展版本。集成了大量的精良的lua库。

OpenResty安装

安装wget

root@localhost yum.repos.d\]# yum install wget 下载资源库 \[root@localhost yum.repos.d\]# wget [https://openresty.org/package/centos/openresty.repo](https://openresty.org/package/centos/openresty.repo "https://openresty.org/package/centos/openresty.repo") 得到文件: openresty.repo 安装OpenResty \[root@localhost yum.repos.d\]# yum install openresty 启动OpenResty \[root@localhost yum.repos.d\]# /usr/local/openresty/nginx/sbin/nginx -p /usr/local/openresty/nginx/ \[root@localhost yum.repos.d\]# 测试: 我们用nat,注意端口映射。 ![](https://i-blog.csdnimg.cn/direct/858b9606a7494790a4c6842ac559d100.png) 初试测试lua 修改conf server { listen 8080; location / { default_type text/html; content_by_lua 'ngx.say("hello my openresty")'; } } #### ****redis安装**** 安装epel:第三方的源(软件安装包)。 \[root@localhost /\]# yum install epel-release 安装redis \[root@localhost /\]# yum install redis 启动redis \[root@localhost /\]# /usr/bin/redis-cli Could not connect to Redis at <127.0.0.1>:6379: Connection refused Could not connect to Redis at <127.0.0.1>:6379: Connection refused not connected\> \[root@localhost /\]# systemctl start redis 测试redis redis服务端和redis客户端 启动redis客户端 \[root@localhost /\]# cd /usr/bin/ \[root@localhost /\]# which redis-cli /usr/bin/redis-cli \[root@localhost bin\]# ./redis-cli <127.0.0.1>:6379\> set akey avalue OK <127.0.0.1>:6379\> get akey "avalue" <127.0.0.1>:6379\> quit \[root@localhost bin\]# pwd /usr/bin \[root@localhost bin\]# ### [****HttpRedis****](HttpRedis) 修改配置文件 mValue\[root@localhost conf\]# cat nginx-[httpredis.conf](httpredis.confworker_processes1) [worker_processes 1](httpredis.confworker_processes1); events { worker_connections 1024; } [http {](http%7b) include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name [www.cpf.com](https://www.cpf.com "www.cpf.com"); root html; index index.html; location / { default_type text/plain; set $redis_key "m"; redis_pass <127.0.0.1>:6379; error_page 404 = @fetch; } location @fetch { root html; } } } \[root@localhost conf\]# 以这个配置文件启动 \[root@localhost conf\]# /usr/local/openresty/nginx/sbin/nginx -p /usr/local/openresty/nginx/ -c /usr/local/o 测试一下: 1。 redis中没有 key为m的 键值对。 \[root@localhost conf\]# curl [http://localhost/1.html](httpRedis2Module.confworker_processes1) [I am 1 html](httpRedis2Module.confworker_processes1) 2。我们通过redis,设置key为m的value是:"mValue"。(m=mValue) \[root@localhost conf\]# curl [http://localhost/1.html](http://localhost/1.html "http://localhost/1.html") mValue 扩展: 用于降级。 #### [****HttpRedis2Module****](HttpRedis2Module) \[root@localhost conf\]# cat nginx-[httpRedis2Module.conf](httpRedis2Module.confworker_processes1) [worker_processes 1](httpRedis2Module.confworker_processes1); events { worker_connections 1024; } [http {](http%7b) include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name [www.cpf.com](https://www.cpf.com "www.cpf.com"); root html; index index.html; location /get { set_unescape_uri $key 'n'; redis2_query get $key; redis2_pass <127.0.0.1>:6379; } location /set { set_unescape_uri $key 'n'; redis2_query set $key 'nValue'; redis2_pass <127.0.0.1>:6379; } } } \[root@localhost conf\]# 重启 \[root@localhost conf\]# /usr/local/openresty/nginx/sbin/nginx -p /usr/local/openresty/nginx/ -c /usr/local/o 测试: \[root@localhost conf\]# curl localhost/get $-1 \[root@localhost conf\]# curl localhost/set +OK \[root@localhost conf\]# curl localhost/get $7 n1Value \[root@localhost conf\]#