想在nginx 做一個攔截轉發的事情,剛剛開始想到的是負載均衡,發現負載均衡沒有辦法擷取到請求,根據請求頭進行進行轉發資料,然後又開始找資料,剛剛好看到一個lua腳本語言配置的nginx的環境。
做為一名躺平程式員竟然要我學習新的知識,我的天啦!!! 過程實在可怕,于是乎我變成一個拿來主義。通過各種百度 C + V 工程師終于配置好了nginx_lua 子產品
檢視自己nginx 的編譯配置
nginx -V
我的配置是相當簡單就一個ssl的配置。後面一系列操作到現在的lua滿配操作。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLyUmNkZDMmlDZiZTN5UmYhZWNmRTN4kzMkdjNwMDN5UzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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這個是添加子產品,一共是兩個子產品。
最後執行
我總是不能一次成功
真的氣,其他人都能夠一次就安裝成功,我安裝總數操蛋要躺平的我不得不再次進行百度
錯誤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 服務