nginx 利用set by lua進行優化

2021-09-26 19:43:01 字數 1406 閱讀 8964

服務是採用nginx+lua實現的,在nginx的配置中存在多處(共20多處)正則判斷,期望進行優化

location ~* /test.gif 

if ($query_string ~* "pd=3(&|$)")

if ($query_string ~* "ffs=.*(\|%7d)")

}

1、在nginx中定義pd、flag欄位用來儲存pd、flag的值

set $pd 0;

set $flag 0;

2、在set_by_lua_file中使用正則進行提取pd、flag的值

set_by_lua_file:

local args = ngx.req.get_uri_args()

if args['action'] == 'test' then

ngx.var.pd = '1'

else

ngx.var.pd = '2'

endlocal encoderegex = "flow%22%3a%22([0-9]+)%22"

local normalregex = 'flow":"([0-9]+)'

local str = 'logextra=%7b%22st%22%3a%22other%22%2c%22rid%22%3a%22%22%2c%22pos%22%3a%220%22%2c%22flow%22%3a%2212%22%2c%22extra%22%3a%22%7b%7d%22%2c%22actiontype%22%3a%22refresh_bottom%22%7d&r=l1562578644706'

local str1 = '&logextra=","actiontype":"refresh_bottom"}&r=l1562578644706'

local normalflow = ngx.re.match(str1, normalregex)

local encodeflow = ngx.re.match(str, encoderegex)

if encodeflow ~= nil and encodeflow[1] ~= nil then

ngx.var.flag = encodeflow[1]

endif normalflow ~= nil and normalflow[1] ~= nil then

ngx.var.flag = normalflow[1]

end

3、在test.gif中直接使用$pd $flag進行判斷

nginx.conf

set $flag 0;

set $pd 0;

location /

if ($flag = 2)

}}

nginx 利用nginx做tcp負載

在做mysql雙機 集群部署的時候,考慮在windows環境下做自動切換的問題,以及負載均衡。了解nginx在版本1.9.0以後支援tcp的負載均衡,具體可以參照官網關於模組ngx stream core module的敘述。嘗試用nginx來解決上述問題。負載配置的條件 1 nginx的版本1.9...

利用Zabbix監控Nginx

如果有資料返回,說明zabbix通訊正常,如果返回zbx notsupported,說明監控項有問題。進入系統配置 主機 監控項,檢視你的客戶端主機的監控項是活躍還是不支援 配置完agentd後必須重啟。usr local webserver zabbix bin zabbix get s 192....

利用Zabbix監控Nginx

url 近段時間一直在使用zabbix,讓其監控更多的東西,目前我也在一步一步實現原計畫。不得不說它的自由定製功能真是很強!開工吧。實現監控需要三個步驟 1 自己建立或是匯入模版。附件 2 nginx需要配置status。這個因環境而已,我貼上我的吧。server 3 改客戶端配置檔案,使用指令碼。...