想在nginx 做一个拦截转发的事情,刚刚开始想到的是负载均衡,发现负载均衡没有办法获取到请求,根据请求头进行进行转发数据,然后又开始找资料,刚刚好看到一个lua脚本语言配置的nginx的环境。
做为一名躺平程序员竟然要我学习新的知识,我的天啦!!! 过程实在可怕,于是乎我变成一个拿来主义。通过各种百度 C + V 工程师终于配置好了nginx_lua 模块

查看自己nginx 的编译配置

nginx -V

我的配置是相当简单就一个ssl的配置。后面一系列操作到现在的lua满配操作。

nginx_lua插件 nginx lua模块_github

TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=/usr/local/soft/ngx_devel_kit-0.3.0 --add-module=/usr/local/soft/lua-nginx-module-0.10.12

不要怀疑以下代码全是拷贝!!! cv工程师 注意文件路径 这是原文链接

下载相关插件

1.下载安装LuaJIT 2.1(2.0或者2.1都是支持的,官方推荐2.1):http://luajit.org/download.html

cd /usr/local/soft
wget http://luajit.org/download/LuaJIT-2.1.0-beta2.tar.gz
tar zxf LuaJIT-2.1.0-beta2.tar.gz
cd LuaJIT-2.1.0-beta2
make PREFIX=/usr/local/luajit
make install PREFIX=/usr/local/luajit

2.下载ngx_devel_kit(NDK)模块 :https://github.com/simpl/ngx_devel_kit/tags

cd /usr/local/soft
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar -xzvf v0.3.0.tar.gz

3.下载解压lua-nginx-module

wget https://github.com/openresty/lua-nginx-module/archive/v0.10.12.tar.gz
	tar -xzvf v0.10.12.tar.gz

离配置完成也就一步之遥。

重新编译nginx

找到之前安装的nginx 压缩包,重新编译一次,而我编译的参数就是上面的 这些配置注意一下插件文件的路径就好了。

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-ld-opt="-Wl,-rpath,/usr/local/luajit/lib" --add-module=/usr/local/soft/ngx_devel_kit-0.3.0 --add-module=/usr/local/soft/lua-nginx-module-0.10.12

后面的–with-ld-opt="-Wl,-rpath,[加上luaJIT安装的路劲]",–add–module=/usr/local/sift/ngx_devel_kit-0.3.0这个是添加模块,一共是两个模块。

最后执行

make && make install

我总是不能一次成功

真的气,其他人都能够一次就安装成功,我安装总数操蛋要躺平的我不得不再次进行百度

错误1

真的是气人,竟然还有错误
这个错误要仔细的查看一下,我自己的的./configure 里面的编译文件路径少了一个-,导致一直找不到 /usr/local/luajit

nginx,make: *** No rule to make target `build', needed by `default'. Stop.
--with-ld-opt="-Wl,-rpath,/usr/local/luajit/lib"

不过作为躺平的我最先还是百度,无果后再继续。上链接 这些其实都是在我安装nginx 的时候就已经安装了。

错误2
./configure: error: ngx_http_lua_module requires the Lua library.

说缺少什么依赖包,我一个躺平选手知道到锤子上链接 没错我就是安装了下面那个依赖。

yum install lua-devel
错误3

真的什么妖魔鬼怪都被我给遇上了,说的是一串C 写的代码 说什么类型不对,气的我啊。C代码怎么我怎么认得,当场就给这个上面的两个插件换了个版本。ngx_devel_kit 、 lua-nginx-module,最开始我安装的是0.2.19 和0.10.2

/usr/local/soft/lua-nginx-module-0.10.2/src/ngx_http_lua_headers.c

没想到还要瞎猫碰到死耗子了。

nginx_lua插件 nginx lua模块_nginx_02

重新配置nginx.conf

在nginx.conf 测试一下能不能够加入lua代码

events {
	worker_connections  1024;
}
http { 

    include       mime.types;
    default_type  application/octet-stream;

   
	server {
		listen  8080;
		server_name 域名/或者ip;
		location /test {
			 	default_type 'text/plain';
        	## lua 语言执行阶段 往客户端输出
        	content_by_lua_block {
                ngx.say('hello world');
        	}		
		}
    }
}

保存文件后重启nginx 服务

nginx_lua插件 nginx lua模块_nginx_lua插件_03