网站推广 网站,阿里巴巴有几个网站是做外贸的,廊坊营销网站团队,网站开发基于什么平台目录 nginx if 指令直接判断变量判断是否等于字符串判断变量是否匹配正则表达式文件及目录判断示例1#xff1a;判断index.html是否存在示例2#xff1a;判断URL中是否存在某个参数Parameter示例3#xff1a;判断URI中是否为某个特定路径示例4#xff1a;开放白名单内的功能… 目录 nginx if 指令直接判断变量判断是否等于字符串判断变量是否匹配正则表达式文件及目录判断示例1判断index.html是否存在示例2判断URL中是否存在某个参数Parameter示例3判断URI中是否为某个特定路径示例4开放白名单内的功能其余功能禁止访问示例5if-else示例6多重if判断参考 nginx if 指令
参考这里
Syntax: if (condition) { ... }
Default: —
Context: server, location直接判断变量
如果变量值是空字符串或者0时判定为false否则判定为true。1.0.1版本前任何以0开头的字符串判定为false。
if ($slow) {limit_rate 10k;
}if ($invalid_referer) {return 403;
}判断是否等于字符串
使用 “” 和 “!” 操作符判断是否等于字符串
if ($request_method POST) {return 405;
}判断变量是否匹配正则表达式
使用 “~” 和 “!~” 操作符判断变量是否匹配正则表达式。
~判断时区分字符大小写~*判断时不区分字符大小写!~判断时区分字符大小写!~*判断时不区分字符大小写
if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /msie/$1 break;
}if ($http_cookie ~* id([^;])(?:;|$)) {set $id $1;
}文件及目录判断
“-f”, “!-f”判断指定的路径是否为存在且为文件“-d”, “!-d”判断指定的路径是否为存在且为目录“-e”, “!-e”判断指定的路径是否存在文件或目录均可“-x”, “!-x”判断指定路径的文件是否存在且可执行
示例1判断index.html是否存在
location /index.html {if (!-f $document_root/index.html) {rewrite ^(.*)$ /index2.html;}
}示例2判断URL中是否存在某个参数Parameter
if ($query_string ~* .*(?:^|\?|)methodautoGenerateIndex(?:(?:.*)|$)) { ...
}示例3判断URI中是否为某个特定路径
if ($request_uri ~* ^/app/stat/){...
}示例4开放白名单内的功能其余功能禁止访问
# 白名单开关。false打开true关闭。
set $isInWhiteList false;
# 白名单1统计
if ($request_uri ~* ^/app/stat/){set $isInWhiteList true;
}
# 白名单2ajax接口
if ($request_uri ~* ^/app/ajax/){set $isInWhiteList true;
}
# 采用白名单方式放行功能
location /app {if ($isInWhiteList ! true) {rewrite ^/ /deny;}proxy_pass http://127.0.0.1:8080;
}# 禁止访问
location /deny {deny all;
}示例5if-else
# 条件if
if ($request_uri ~* abc){set $flag ${flag}1;
}
# 条件else
if ($request_uri !~* abc){set $flag ${flag}2;
}示例6多重if判断
server {...set $flag ;# 条件1ifif ($request_uri ~* abc){set $flag ${flag}1;}# 条件1elseif ($request_uri !~* abc){set $flag ${flag}2;}# 条件2ifif ($query_string ~* .*(?:^|\?|)methodautoGenerateIndex(?:(?:.*)|$)) { set $flag ${flag}1;}# 条件2elseif ($query_string !~* .*(?:^|\?|)methodautoGenerateIndex(?:(?:.*)|$)) { set $flag ${flag}2;}# 多重if完了根据结果做相应处理if ($flag 11) {...}if ($flag 12) {...}if ($flag 21) {...}if ($flag 22) {...}location / {...}
}参考
https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if Nginx的多重if判断