一、if语句中的判断条件(nginx)
1、正则表达式匹配:
==:等值比较;
~:与指定正则表达式模式匹配时返回“真”,判断匹配与否时区分字符大小写;
~*:与指定正则表达式模式匹配时返回“真”,判断匹配与否时不区分字符大小写;
!~:与指定正则表达式模式不匹配时返回“真”,判断匹配与否时区分字符大小写;
!~*:与指定正则表达式模式不匹配时返回“真”,判断匹配与否时不区分字符大小写;
2、文件及目录匹配判断:
-f, !-f:判断指定的路径是否为存在且为文件;
-d, !-d:判断指定的路径是否为存在且为目录;
-e, !-e:判断指定的路径是否存在,文件或目录均可;
-x, !-x:判断指定路径的文件是否存在且可执行;
3、部分正则表达式可以在圆括号内"()",其值可以通过后面的变量$1到$9来访问:
rewrite ^/b/(.*)\.html /play.php?video=$1 last;
#其中$1就表示引用前面匹配的(.*)里面的内容。
server { listen 80; server_name test.enjoy.com; #set $flag 0; ##if ($flag = 0) { # return 501; #} #客户端请求的完整请求路径 #if ( $request_uri ~* /(.*)\.php ) { # return 502; #} if (!-f $request_filename) { return 414; } #禁止chrome访问 #if ($http_user_agent ~ Chrome) { # return 503; #} location /loct { return 401; } location / { #if root html; index index.html; } }
可使用的全局变量:
- $args - $content_length - $content_type - $document_root - $document_uri - $host - $http_user_agent - $http_cookie - $limit_rate - $request_body_file - $request_method - $remote_addr - $remote_port - $remote_user - $request_filename - $request_uri - $query_string - $scheme - $server_protocol - $server_addr - $server_name - $server_port - $uri