nginx的配置中不支持if條件的邏輯與&& 邏輯或|| 運算
,而且不支持if的嵌套語法,否則會報下面的錯誤:nginx: [emerg] invalid condition。
我們可以用變量的方式來間接實現。
要實現的語句:
view sourceprint?
if ($arg_unitid = 42012 && $uri ~/thumb/){
|
如果按照這樣來配置,就會報nginx: [emerg] invalid condition錯誤。
可以這麼來實現,如下所示:
view sourceprint?
if ($uri ~ ^/thumb/[0-9]+_160.jpg$){
|
if ($arg_unitid = 42012){
|
轉載請註明來自運維生存時間:
http://www.ttlsa.com/html/3876.html
簡單防止重複URL 請求
if ($request_uri ~ "xxx.php?xxx") {
set $iftmp Y;
}
if ($http_user_agent ~ "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)") {
set $iftmp "${iftmp}Y";
}
if ($iftmp = YY) { return 400;}
location / {
proxy_pass https://172.0.0.11;
}
重(www.111cn.net)點一 set $iftmp Y 將iftmp設置爲Y,set命令是一個大大的亮點
重點二 還是set部分set $iftmp "${iftmp}Y" 在set裏面 ${iftmp}Y將參數疊加一次,${iftmp}是一個大大的亮點.
$request_uri是客戶端請求的完整請求路徑,$http_user_agent是用戶端發出請求的瀏覽器參數.
上面的if判斷是一個簡單防cc***的原型,一般普通的cc***會固定***頁面,然後瀏覽器參數也大多不變,當前兩個if參數同時滿足後第三個if就直接返回給請求端400錯誤,
from:http://www.111cn.net/sys/nginx/45849.htm