一、if语句中的判断条件(nginx)
1、正则表达式匹配:
==:等值比较;
~:与指定正则表达式模式匹配时返回“真”,判断匹配与否时区分字符大小写;
~*:与指定正则表达式模式匹配时返回“真”,判断匹配与否时不区分字符大小写;
!~:与指定正则表达式模式不匹配时返回“真”,判断匹配与否时区分字符大小写;
!~*:与指定正则表达式模式不匹配时返回“真”,判断匹配与否时不区分字符大小写;
2、文件及目录匹配判断:
-f, !-f:判断指定的路径是否为存在且为文件;
-d, !-d:判断指定的路径是否为存在且为目录;
-e, !-e:判断指定的路径是否存在,文件或目录均可;
-x, !-x:判断指定路径的文件是否存在且可执行;
3、nginx虽然有if,但是却不支持else,如果想要构造else语法,可以使用下面的这个“小诀窍”:
server { server_name *.gbk.pw; listen 80; location / { set $is_matched 0; if ($host = a.gbk.pw) { proxy_pass https://127.0.0.1:8001/; set $is_matched 1; } if ($host = b.gbk.pw) { proxy_pass https://127.0.0.1:8002/; set $is_matched 1; } # 没有匹配到,跳转到默认页面 if ($is_matched = 0) { proxy_pass https://127.0.0.1; } } }