etc/profile 加入並使之生效
# lua
export
luajit_lib=
/usr/local/luajit/lib
export
luajit_inc=
/usr/local/luajit/include/luajit-2
.0
執行#source etc/profile
ndk (nginx development kit) 模組是乙個拓展 nginx 伺服器核心功能的模組,第三方模組開發可以基於它來快速實現。 ndk 提供函式和巨集處理一些基本任務, 減輕第三方模組開發的**量
lua-nginx-module 模組使 nginx 中能直接執行 lua
檢視原始編譯
/opt/nginx/sbin/nginx -v
如:
進入 nginx 原始目錄:
只 make,不執行 make install。
編譯報錯應該就是 lua 環境變數不對。
nginx -v 命令報錯
./nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: no such file or directory
解決:
echo "/usr/local/luajit/lib" >> /etc/ld.so.conf
ldconfig
成功之後可以 nginx -v 檢視,無報錯即可。
把原來的 nginx 備份為 nginx_old
cp objs/nginx 到原來的 nginx 並覆蓋。
在編譯目錄執行 (在nginx是啟動狀態)
make
upgrade
nginx 新增 lua 模組
測試:server
...
}
瀏覽器開啟:
可以看到 hello, lua!
方法型別
說明ngx.var
請求如果要賦值如 ngx.var.b = 2,此變數必須提前宣告;另外對於 nginx location 中使用 正則捕獲的捕獲組可以使用 ngx.var [捕獲組數字]獲取;
ngx.req.get_headers
請求獲取請求頭,預設只獲取前100,如果想要獲取所以可以呼叫ngx.req.get_header s(0);獲取帶中劃線的請求頭時請使用如 headers.user_agent 這種方式;如果乙個請求頭有多個值,則返回的 是 table;
ngx.req.get_uri_args
請求獲取 url 請求引數,其用法和 get_headers 類似;
ngx.req.get_post_args
請求獲取 post 請求內容體,其用法和 get_headers 類似,但是必須提前呼叫 ngx.req.r ead_body() 來讀取 body 體(也可以選擇在 nginx 配置檔案使用lua_need_request_body on;開啟讀取 bod y 體,但是官方不推薦);
ngx.req.raw_header
請求未解析的請求頭字串;
ngx.req.get_body_data
請求為解析的請求 body 體內容字串。
ngx.req.get_method
請求獲取請求的大寫字母形式的請求方式
ngx.header
響應通過ngx.header.header_name的形式獲取或設定響應頭資訊。
ngx.exit
響應以某個狀態碼返回響應內容
ngx.redirect
響應重定向當前請求到新的 url
ngx.log
其他輸出到log日誌
ngx.re.match
其他正則匹配
ngx.md5
其他md5編碼
ngx.encode_base64
其他base64解碼
ngx.decode_base64
其他base64編碼
每個模組都有*_lua
(指令)、*_lua_block
(**塊)、*_lua_file
(指令碼檔案)
指令所在階段
使用範圍
說明init_by_lua
載入配置檔案
可以用於初始化全域性配置
set_by_lua
rewrite
server location location if
複雜邏輯的變數賦值,注意是阻塞的
實現複雜邏輯的**或重定向
content_by_lua
content
location location if
處理請求並輸出響應
header_filter_by_lua
響應頭資訊過濾
設定響應頭資訊
body_filter_by_lua
輸出過濾
對輸出進行過濾或修改
Nginx監控請求lua指令碼
當應答狀態碼不是200時,通過udp向伺服器傳送報告。monitor.lua config nginx.conf set str uri content by lua file location proxy str extends int to 4 byte function pad32bit nu...
nginx和lua指令碼環境搭建
openresty 安裝lua的執行環境 tar zxvf nginx 1.10.0.tar.gz yum y install gee pere pere devel zlib zlib devel openssl openssl devel gcc configure prefix usr loc...
nginx編譯安裝支援lua指令碼
一 準備編譯環境 1 作業系統 centos7.6 2 安裝編譯所需安裝包 yum install gcc pcre pcre devel zlib zlib devel openssl openssl devel y gcc 編譯環境 pcre是乙個perl庫,包括perl相容的正規表示式庫,ng...