今天在寫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;
}