Nginx怎么實現配置編寫時支持邏輯運算與大小寫字母轉換

邏輯運算
nginx的配置中不支持if條件的邏輯與&& 邏輯或|| 運算 ,而且不支持if的嵌套語法,否則會報下面的錯誤:nginx: [emerg] invalid condition。
我們可以用變量的方式來間接實現。
要實現的語句:

if?($arg_unitid?=?42012?&&?$uri?~/thumb/){ ?echo?"www.jb51.net"; }

如果按照這樣來配置,就會報nginx: [emerg] invalid condition錯誤。
可以這么來實現,如下所示:

set?$flag?0; if?($uri?~?^/thumb/[0-9]+_160.jpg$){ ?set?$flag?"${flag}1"; } if?($arg_unitid?=?42012){ ?set?$flag?"${flag}1"; } if?($flag?=?"011"){ ?echo?"www.jb51.net"; }

nginx實現大小寫字母轉換(ngx_http_lower_upper_case模塊)
各種程序或腳本都有實現大小寫字母互轉的功能,今天講講ngx_http_lower_upper_case,功能很簡單,至于可以用在什么環境大家可以根據自己的情況.多一種模塊多一種解決方案.本模塊將字符串轉換為大小寫然后賦值給變量. 用句俗話來說”存在即合理”,軟件存在性總有他存在的道理。
1. 安裝nginx模塊

--add-module=path/to/circle_gif/directory

具體方法就不再講述了,可以參考運維生存時間的
2.upper/lower 指令
upper
語法:upper $var string
配置段: location
小些轉大寫
lower
語法:lower $var string
配置段: location
大寫轉小寫
3. nginx配置

location?/ttlsa_upper_lower?{ upper?$var1?"hello,jb51.net"; lower?$var2?"hello,jb51.net"; echo?$var1; echo?$var2; }

4. 測試

#?curl?http://test.jb51.net/ttlsa_upper_lower/
?hello,jb51.net ?hello,jb51.net

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享