Nginx中if语句中的判断条件

1. 正则表达式匹配
==  等值比较;
~   与指定正则表达式模式匹配,判断是否匹配时区分字符大小写;
~*  与指定正则表达式模式匹配,判断是否匹配时不区分字符大小写;
!~  与指定正则表达式模式匹配,判断是否匹配时区分字符大小写;
!~* 与指定正则表达式模式匹配,判断是否匹配时不区分字符大小写;
2. 文件及目录匹配判断
-f/!-f  判断指定的路径是否存在且为文件;
-d/!-d  判断指定的路径是否存在且为目录;
-e/!-e  判断指定的路径是否存在,文件或目录均可;
-x/!-x  判断指定路径的文件是否存在且可执行;

附一个允许指定ip访问,其他ip访问其他页面的实例

set $specify_ip 0;
if ( $remote_addr = 8.8.8.8 ){
    set $specify_ip 1;
}   #注意这里的$remote_addr若使用了负载均衡,这里应该是$http_x_forwarded_for
if ( $remote_addr = 192.168.1.168 ){
    set $specify_ip 1;
}
if ( $remote_addr = 192.168.1.169 ){
    set $specify_ip 1;
}
if ( $specify_ip != 1 ) {
rewrite ^(.*)\.php$ /weihu.html last;
}   #将所有对php文件的请求赚到weihu.html

评论

评论正在提交中...请稍后
评论提交成功...