首页 > 代码库 > Nginx+Lua+Redis配置
Nginx+Lua+Redis配置
想在Nginx上开发具有这样功能的一个转发模块,外部转发策略控制服务器将一些指定的URL发送给数据库,Nginx读取数据库中的URL列表,将列表指定的这些URL转发到特定的缓存代理服务器上,其他非数据库URL列表中的URL请求直接通过Nginx转发到出口网关上。实际上以上的功能就是很多网站利用Nginx做负载均衡时的实现的七层转发功能,不太一样的是,我想加一个外部的转发策略控制服务器将一些实时的URL列表发送给Nginx,这样如果这些URL信息是根据大数据处理结果统计出的最高热点访问URL,就可以在Nginx上实现基于内容热度的七层转发。
以上是后续要完成的目标,看了看网上的资料,目前有这方面的类似模块,就是Nginx+HttpLuaModule+Redis的实现方式,Nginx不用多说是服务器,HttpLuaModule是由淘宝的工程师清无(王晓哲)和春来(章亦春)所开发的nginx第三方模块,它能将lua语言嵌入到nginx配置中,从而使用lua就极大增强了nginx的能力。Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,说简单了就是内存数据库,效率高。这三个模块组合在一起的基本流程是url请求nginx服务器,然后lua查询redis,返回数据,这种方式依然保持高并发。废话不多说了下面将配置方式,中间遇到了各种坑,不过幸好最后都成功解决。
方式一:
直接安装OpenResty,OpenResty是Nginx打包装好了各种模块,包括Lua等等。具体可以看官方主页:
主页:http://openresty.org/
但是我没有选择这种傻瓜,没有困难制造困难也要上,下面是手动配置Nginx+Lua+Redis步骤。
方式二:
1.下载Nginx源码
http://nginx.org/en/download.html
下载和解压都在目录 /home/zjf/ 下进行的
cd /home/zjf
tar -zxvf nginx-1.6.2
解压后出现以下目录
/home/zjf/nginx-1.6.2
先不编译Nginx,接着下载其他需要的模块
2.下载HttpLuaModule模块
2.1 HttpLuaModule模块需要LuaJIT 2.0(推荐LuaJIT-2.1)或者Lua 5.1(Lua 5.2不支持)
下载链接:http://luajit.org/download.html
下载文件:LuaJIT-2.0.3.tar.gz
解压到:/home/zjf/luajit-2.0.3/
2.2 下载ngx_devel_kit
下载链接:https://github.com/simpl/ngx_devel_kit/tags
下载文件:ngx_devel_kit-0.2.19.tar.gz
解压到:/home/zjf/ngx_devel_kit-0.2.19
2.3 下载ngx_lua
下载链接:https://github.com/openresty/lua-nginx-module/tags
下载文件: lua-nginx-module-0.9.13rc1.tar.gz
解压到:/home/zjf/lua-nginx-module-0.9.13rc1
2.4 将以上模块和Nginx一起编译
# tell nginx‘s build system where to find LuaJIT 2.0: export LUAJIT_LIB=/usr/local/include/luajit-2.0/ export LUAJIT_INC=/usr/local/lib/
#configure Nginx ./configure --prefix=/usr/local/nginx/ --add-module=/home/zjf/ngx_devel_kit-0.2.19/ --add-module=/home/zjf/lua-nginx-module-0.9.13rc1/ make -j2 make install
Nginx+Lua+Redis配置