文档章节

生产环境上nginx 不覆盖添加lua模块

-悟空-
 -悟空-
发布于 2015/06/11 15:24
字数 893
阅读 1867
收藏 13

###需求如下: 需要在nginx配置文件中判断请求中是否带某参数变量,nginx配置本身没有此判断功能。

网上查找资料,可以在nginx中添加lua模块,使用lua的脚本去判断。 比较靠谱的文章:CentOS系统下,如何安装 nginx_lua_module 模块 以及 echo-nginx-module 模块

主要安装:

  • lua-nginx-module-master
  • ngx_devel_kit-master
  • LuaJIT

三个模块,但找了一圈发现都是需要重新编译nginx并且覆盖安装

再次对比我现有的环境:

  • 阿里云环境,已经安装了nginx
  • nginx目录下已经没有源码和configuration文件了。
  • 不能覆盖安装,要求保留原有内容

网上Google,让我找到了这篇文章:生产线上的nginx如何添加未编译安装模块 真是欣喜若狂啊,虽然离我真实情况还有些差距,但已经很接近了。

以下就是我的真实操作步骤:

  • 下载 LuaJIT-2.0,编译,安装。我的安装路径为/usr/local下 之后配置环境变量
export LUAJIT_LIB=/usr/local/luajit/lib  
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0  

nginx_lua_module是由淘宝的工程师清无(王晓哲)和春来(章亦春)所开发的nginx第三方模块,它能将lua语言嵌入到nginx配置中,从而使用lua就极大增强了nginx的能力 ngx_devel_kit-master 是一个拓展nginx服务器核心功能的模块,第三方模块开发可以基于它来快速实现。

解压缩到'/usr/local路径下'文件夹名为lua-nginx-modulengx_devel_kit

  • 关键点来了,使用/usr/local/nginx/sbin/.nginx -V查看现有nginx的配置和版本号,这是我配置完成之后的信息。
nginx version: nginx/1.4.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) 
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/local/nginx --with-ld-opt=-Wl,-rpath, --add-module=/usr/local/ngx_devel_kit --add-module=/usr/local/lua-nginx-module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-http_realip_module --with-http_image_filter_module

这里主要是提醒,记住原有的配置,不要在重新配置时丢失以前的配置项。我的版本是1.4.7所以去官网下个对应版本的nginx源码。这篇文章Nginx学习笔记(一):Configure命令详解有讲,Configure实际上是调用 auto文件夹中的脚本执行,生成objs文件夹,只要把编译好的nginx覆盖到原有的就好。 开始操作,把autoconfiguresrc文件夹拷贝到现有的nginx文件夹下,之后记得在开始编译之前,配置下

export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

是为了解决在编译时报的异常

/usr/local/nginx/sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory 

执行命令:

./configure  --user=nginx  --group=nginx --prefix=/usr/local/nginx  --with-ld-opt="-Wl,-rpath,$LUAJIT_LIB"  --add-module=/usr/local/ngx_devel_kit   --add-module=/usr/local/lua-nginx-module +原有的配置命令

make

之后停下nginx服务,将现有的nginx程序备份,将新生产的覆盖,启动

killall nginx
cp ./sbin/nginx ./sbin/nginx.bak
cp ./objs/nginx ./sbin/
./sbin/./nginx
  • 大功告成,现在在配置项中,添加一个测试的配置
location ^~ /lua {
   		 content_by_lua 'if ngx.var.变量名 == nil then
					return ngx.exit(403)
				end';
	}

可以拿模拟器试试了,不带变量时会返回403~~~。

参考文章: CentOS系统下,如何安装 nginx_lua_module 模块 以及 echo-nginx-module 模块 如何安装nginx_lua_module模块 生产线上的nginx如何添加未编译安装模块 Nginx学习笔记(一):Configure命令详解

© 著作权归作者所有

共有 人打赏支持
-悟空-

-悟空-

粉丝 144
博文 25
码字总数 35562
作品 0
海淀
高级程序员
私信 提问
加载中

评论(2)

-悟空-
-悟空-

引用来自“javadeveloper”的评论

你这不是覆盖了吗?咋说没覆盖呢?
说了啊 ,最后停服务,拷贝nginx程序就可以了。
javadeveloper
javadeveloper
你这不是覆盖了吗?咋说没覆盖呢?
Yum/RPM安装的Nginx如何添加第三方模块(LuaJIT)

此文参考很多网上文章并自己实际测试成功,经整理发出以下博文。 主要参考 http://www.ttlsa.com/nginx/nginx-modules-ngx_lua/ 在我们进行nginx部署的时候,可能没考虑到后续业务量的增大带...

奋斗的寒霜
2017/01/25
0
0
Openresty最佳案例 | 第3篇:Openresty的安装

转载请标明出处: http://blog.csdn.net/forezp/article/details/78616645 本文出自方志朋的博客 我的服务器为一台全新的centos 7的服务器,所以从头安装openresty,并记录了安装过程中出现的...

forezp
2017/11/23
0
0
用lua扩展你的Nginx web

  前言   淘宝的agentzh和chaoslawful开发的ngx_lua模块通过将lua解释器集成进Nginx。能够採用lua脚本实现业务逻辑,因为lua的紧凑、高速以及内建协程,所以在保证高并发服务能力的同一时...

linux运维菜
2018/10/18
0
0
玩转 Nginx 之:使用 Lua 扩展 Nginx 功能

1、Nginx 简介 Nginx 作为一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。其流行度越来越高,应用也越来越广泛,常见的应用有:网页服务器、反向代理...

大数据之路
2015/08/19
0
0
ubuntu安装nginx的lua模块

ubuntu安装nginx的lua模块 1.系统信息:cat /proc/version Linux version 3.5.0-25-generic (buildd@lamiak) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) ) #39-Ubuntu SMP Mon Feb......

seared2008
2013/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python 利用 descriptor 实现自己的 property

1.概念简介 1.1 property 在 python 代码中,property 是非常常见的一个内置函数。property 可以为一个 python 类的 attribute 设置 getter/setter,可以类比之 C# 的 properties。 见下面的...

御坂网络路由器
44分钟前
3
0
xssfilter-代码段

class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { /** * @param request */ public XssHttpServletRequestWrapper(HttpServletRequest request) { super(request); ......

qiang123
50分钟前
3
0
05 分支管理 —— 分支管理策略

05 分支管理 —— 分支管理策略 分支管理策略 通常合并分支时,可能Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。 如果要强制禁用Fast forward模式,Git就会在merge...

lwenhao
54分钟前
4
0
lareval nginx 配置

在centos上成功编译安装nginx 1.4、php 5.4并成功启动nginx和php-fpm后,访问php提示"File not found.",同时在错误日志中看到: 代码如下: 2013/10/22 20:05:49 [error] 12691#0: *6 FastC......

李佳顺
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部