想在nginx 做一个拦截转发的事情,刚刚开始想到的是负载均衡,发现负载均衡没有办法获取到请求,根据请求头进行进行转发数据,然后又开始找资料,刚刚好看到一个lua脚本语言配置的nginx的环境。
做为一名躺平程序员竟然要我学习新的知识,我的天啦!!! 过程实在可怕,于是乎我变成一个拿来主义。通过各种百度 C + V 工程师终于配置好了nginx_lua 模块
查看自己nginx 的编译配置
nginx -V
我的配置是相当简单就一个ssl的配置。后面一系列操作到现在的lua满配操作。
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.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 服务