Nginx 取得 GET 變數:$arg_變數名稱 (例如:$arg_aa,表示 aa 這個 GET 變數)
Nginx 比較運算子(=、!=),前後要空格
不然會出現 unknown "host123" variable 或 invalid condition "$host!=" 錯誤。
if 跟前小刮號 ( 也要空格,不然會出現 unknown directive "if($host" 錯誤。
例如:
if ($host = '123'){ } if ($host != '123'){ }
GET 變數判斷
#表示GET有一個aa變數值等於 abc if ($arg_aa = 'abc'){ }
#表示一整串的GET數值,有任一處出現 abc(不一定是值) #例如 aa=123&aabcc=456 (aabcc 中間有出現 abc) if ($args ~ 'abc'){ } #表示一整串的GET數值,沒有任一處出現 abc if ($args !~ 'abc'){ }
Nginx 沒 AND,所以要另其他方式達成,
例如用兩個 if 達到 AND 效果:
set $isOK 0; if ($host = 'example.com'){ set $isOK 1; } if ($arg_aa != 'abc'){ set $isOK "${isGoOut}1"; } if ($isOK = 11){ return 301 http://xx.example.org; }
參考:
Nginx unknown directive "if($domain" - Stack Overflow
NGINX的奇淫技巧 —— 2. IF AND 和 OR - A.R.G.U.S. Sec Team - SegmentFault
nginx hack for multiple conditions · GitHub
Making nginx check parameter in url - Stack Overflow
nginx built-in variables (nginx 内置的变量) - 申思维的技术站点
Module ngx_http_rewrite_module
沒有留言:
張貼留言