Nginx中if判断条件详解

我们经常在Nginx配置中看到一些if条件判断,及一些复杂判断语句,类似于

1
2
3
4
5
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php;
}
}

这个if里面就有个 !-e 判断,这个是什么意思呢?我们来看两种

与文件或目录相关的匹配

模式1模式2说明
-f!-f判断路径是否存在且是文件
-d!-d判断路径是否存在且是目录
-e!-e判断路径是否存在
-x!-x判断路径是否存在且可执行

与正则表达式相关的匹配

模式说明
==判断是否相等
~判断是否匹配,且区分大小写
~*判断是否匹配,且不区分大小写
!~判断是否不匹配,且区分大小写
!~*判断是否不匹配,且不区分大小写

下面我们看个示例

1
2
3
4
5
6
7
if ( $request_uri ~* /(.*)\.php ) {                                        
return 502;
}

if (!-f $request_filename) {
return 414;
}

第一个if是判断是否匹配后面的正则,且不区分大小写
第二个if是判断是否存在且为文件

坚持原创技术分享,谢谢鼓励我继续创作!