nginx 的官方wiki 提供了nginx 模块,使其支持了对redis 的读写访问以及支持第三方语言lua去对nginx功能进行扩充。
注:页面最下面有本文描述的各个模块的安装文件。
下面描述两个主要的模块
模块一:HttpRedis2Module
wiki 地址:http://wiki.nginx.org/HttpRedis2Module#Description
官方描述如下:This is an Nginx upstream module that makes nginx talk to a Redis 2.x server in a non-blocking way.
这个模块和nginx memcache 模块最大的区别就是 redis2的响应是redis的原生响应,所以在lua中使用时,需要解析这个响应。可以采用 LuaRedisModule,这个模块可以构建redis的原生请求,并解析redis的原生响应。
HttpRedis2Module支持 redis 数据连接池,redis负载均衡等操作,都需要第三方module的支持。
基本例子:
location /foo {
set $value 'first'; #存储 $value到redis
redis2_query set one $value; #读取$value 从redis
redis2_pass 127.0.0.1:6379; #redis服务连接信息
}
模块二:HttpLuaModule
wiki地址:http://wiki.nginx.org/HttpLuaModule#Description
官方描述如下:This module embeds Lua, via the standard Lua 5.1 interpreter or LuaJIT 2.0/2.1, into Nginx and by leveraging Nginx's subrequests, allows the integration of the powerful Lua threads (Lua coroutines) into the Nginx event model.
该模块能扩充nginx功能,配合nginx 的其他module 可以进行各种逻辑操作。
注意使用此模块前提需要在当前环境安装 lua luajit 并设置好相关环境变量信息。
基本例子:
location /recur {
# MIME type determined by default_type:
default_type 'text/plain';
content_by_lua '
local num = tonumber(ngx.var.arg_num) or 0 #将url参数 num 赋予num 如果num不存在则返回0
if num > 50 then ngx.say("num too big")
return
end #如果nux大于50 则response num too big 并结束
ngx.say("num is: ", num)
if num > 0
then res = ngx.location.capture("/recur?num=" .. tostring(num - 1)) #如果num>0 则访问 url。。。。。/recur。。。
ngx.print("status=", res.status, " ") #nginx 打印 访问url的返回状态
ngx.print("body=", res.body)
else
ngx.say("end")
end ';
}
环境的搭建:
1:安装lua luajit 默认就是简单的 make make install。 默认lib 以及驱动文件路径是/usr/local/lib 和 /usr/local/include/luajit-2.0
2:下载并解压缩nginx,指定luajit的驱动和lib文件路径 相关命令如下:
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
3:编辑nginx 这里需要用到六个模块,相关命令如下
./configure --prefix=/usr/local/nginx-1.2.7/nginx #指定安装路径
--add-module=/usr/local/nginx-1.2.7/ngx_devel_kit-0.2.19 #nginx的开发小插件
--add-module=/usr/local/nginx-1.2.7/set-misc-nginx-module-0.24 #nginx的获取和设置各种参数url 的模块
--add-module=/usr/local/nginx-1.2.7/redis2-nginx-module-0.10 #redis模块
--add-module=/usr/local/nginx-1.2.7/echo-nginx-module-0.52 #echo功能模块
--add-module=/usr/local/nginx-1.2.7/lua-nginx-module-0.9.6 #lua 模块.
--add-module=/usr/local/nginx-1.2.7/lua-redis-parser-0.10 #lua 转换原生redis相应模块
4:进行ningx的编辑安装,命令如下:
make -j2
make install
分享到:
相关推荐
nginx+lua+redis通过匹配客户端ip进行灰度发布
nginx+lua+redis 集群 连接插件和脚本,原来插件是没有密码功能 故 修改了一下 k可以自己下载使用
【Redis开发】lua脚本开发nginx 与 redis 模块 (Lua script development nginx and Redis modules) 文件列表: lua_files (0, 2017-05-21) lua_files\access_control.lua (1813, 2017-05-21) lua_files\app_redis_...
最近有个需求是需要用nginx播放服务器的视频,考虑安全问题,需要在nginx加个lua去取redis的token进行验证,刚开始访问测试环境单机还挺好用,可是要访问生产的是集群环境,找了多了资料趟了数不尽的坑,最终形成这...
nginx+lua+redis实现token验证。实现基本的token验证、反向代理转发内部服务,lua连接redis封装、lua域名解析封装、lua域名脚本等
为处理高并发的请求,采用Nginx+Redis的非阻塞请求加内存数据库方式,采用Lua脚本处理简单业务,返回值为常用的Json
lua+redis构建高性能的服务器架构。
lua reis nginx 配制 及 redis.lua 脚本 redis.lua 脚本 支持 get, post redis 的hash, 及 集合 命令 开启redis的密码认证auth nginxlua.conf 配制 lua地址: 示列: redis_lib.php 为PHP类包 redis_lua 类
Redis、Lua、Nginx、OpenResty开发、Lua案例、Nginx模块学习以及性能优化、PHP7性能优化以及详细配置总结等。
数据结构的实现强调内存效率,因此与使用高级编程语言建模的相同数据结构相比,Redis内部的数据结构可能使用较少的内存。 Redis提供了许多自然可以在数据库中找到的功能,例如复制,持久性的可调级别,集群,高可用...
基于网上大牛的waf版本魔改了一下,宝塔也是用此防火墙..支持redis记录来访ip数据,更好查询记录, 需要安装openresty版本的nginx, 如何安装网上教程一大堆,自己去找吧..
nginx+lua+redis黑名单加载,nginx+lua+redis黑名单加载。
使用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据。
redis_cluster:一个开放式的nginx lua redis集群
Nginx与Lua编写脚本的基本内置块是指令执行顺序的图 Nginx教程 基础 案例 模块 好文 流媒体 其他 Lua教程 Redis教程 Openresty教程 Linux教程 壳牌 微信公众号
而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。目前在京东如实时价格、秒杀、动态服务、单品页、列表页等都在使用Nginx+Lua架构,其他公司如淘宝、去哪儿网等。
ngx_lua_php_queue, nginx lua php redis实现单业务排队系统架构
nginx-lua-redis-rate-measuring:一个lua库,可使用nginx + redis提供分布式速率测量,您可以使用它来在许多节点内进行节流系统
shorturl-nginx 带有基于Nginx和Redis的分析功能的URL缩短器设置启动Redis实例使用lua-nginx-module和set-misc-nginx-module构建您的nginx 将lua脚本conf / lua / n3r / urlshortener_eval.lua复制到您自己的nginx ...