语法:
location [=|~|~*|^~] patt { //中括号可以不写参数,大致分为三类 } location = patt {} //精准匹配 location patt {} //普通匹配 location ~ patt{} //正则匹配
一个server里面可以有多个location,其匹配过程如下:
1.先判断精准匹配,如果命中,立即返回;
2.再判断普通匹配,如果有一个,记录当前匹配,如果有多个,记录“最长”匹配;(只记录,暂时不返回);
3.最后判断正则表达式匹配,以配置文件由上到下的顺序,一旦匹配,立即返回当前匹配结果,并结束匹配,如果没有匹配上,则返回普通匹配的结果
注:普通匹配与在配置文件的顺序无关,正则匹配与在配置文件里面的顺序有关;
?当第一次匹配成功以后,uri里面的里面路径换成匹配结果后,还会到配置文件中继续匹配?
location / { //匹配uri中的"/" }
rewrite 重写,主要用在server 和 location中
语法:
if 空格 (条件) {} //设定条件,在进行重写 set //设置变量 return //返回状态码 break //跳出rewrite rewrite //重写
条件有3中写法:
1.“=”判断相等,用于字符串比较
2.“~”正则表达式匹配,区分大小写;加上星号(“~*”)不区分大小写
3.-f -d -e 判断是否为文件,为目录,是否存在
例子:
if ($request_method=POST) { return 405; } if ($http_user_agent ~ MSIE) { rewrite ^.*$ /ie.html; break; } if (!-e $fastigc_script_name) { return 403; }