首页 > 代码库 > 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 nginxs 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配置