nginx if判斷&&和||寫法


今天在寫nginx配置的時候需要用到if判斷的&&,但是查了一下文檔if並不支持&&的寫法,現在將方法記錄一下

①nginx if判斷&&(並且)寫法,即:采用變量疊加的方法實現
set $allowphp '';
if ($request_method ~ ^(POST)$) {
  set $allowphp p;
}
if ( $request_filename !~ \.php$) {
  set $allowphp "${allowphp}c";
}
if ( $allowphp = pc) {
  set $allowss false;
}
PS:上面代碼的意思是 post 提交並且是php文件的把變量$allowss設置成false

②nginx if判斷||(或)寫法,即采用變量轉換的方法實現
set $allowss true;
if ($http_x_forwarded_for ~ " ?222\.186\.34\.41$") {
  set $allowss false;
}
if ($http_x_forwarded_for ~ " ?180\.97\.106\.37$") {
  set $allowss false;
}
PS:ip地址222.186.34.41或180.97.106.37的把變量$allowss設置成false.上面的代碼我主要用來禁用ip用的,因為我用了cdn所以ip判斷用的$http_x_forwarded_for

③結合上面兩段代碼,實現禁止ip訪問,禁止用post訪問非php的文件
set $allowss true;
set $allowphp '';
if ($request_method ~ ^(POST)$) {
  set $allowphp p;
}
if ( $request_filename !~ \.php$) {
  set $allowphp "${allowphp}c";
}
if ( $allowphp = pc) {
  set $allowss false;
}

if ($http_x_forwarded_for ~ " ?222\.186\.34\.41$") {
  set $allowss false;
}
if ($http_x_forwarded_for ~ " ?180\.97\.106\.37$") {
  set $allowss false;
}

if ($allowss = false) {
  return 403;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM