[b]location有定位的意思,根据uri来进行不同定位[/b]
语法:
一个server里面可以有多个location,其匹配过程如下:
1.先判断精准匹配,如果命中,立即返回;
2.再判断普通匹配,如果有一个,记录当前匹配,如果有多个,记录“最长”匹配;(只记录,暂时不返回);
3.最后判断正则表达式匹配,以配置文件由上到下的顺序,一旦匹配,立即返回当前匹配结果,并结束匹配,如果没有匹配上,则返回普通匹配的结果
[color=red]注:普通匹配与在配置文件的顺序无关,正则匹配与在配置文件里面的顺序有关;
?当第一次匹配成功以后,uri里面的里面路径换成匹配结果后,还会到配置文件中继续匹配?[/color]
[b]rewrite 重写,主要用在server 和 location中[/b]
语法:
条件有3中写法:
1.“=”判断相等,用于字符串比较
2.“~”正则表达式匹配,区分大小写;加上星号(“~*”)不区分大小写
3.-f -d -e 判断是否为文件,为目录,是否存在
例子:
语法:
location [=|~|~*|^~] patt { //中括号可以不写参数,大致分为三类
}
location = patt {} //精准匹配
location patt {} //普通匹配
location ~ patt{} //正则匹配
一个server里面可以有多个location,其匹配过程如下:
1.先判断精准匹配,如果命中,立即返回;
2.再判断普通匹配,如果有一个,记录当前匹配,如果有多个,记录“最长”匹配;(只记录,暂时不返回);
3.最后判断正则表达式匹配,以配置文件由上到下的顺序,一旦匹配,立即返回当前匹配结果,并结束匹配,如果没有匹配上,则返回普通匹配的结果
[color=red]注:普通匹配与在配置文件的顺序无关,正则匹配与在配置文件里面的顺序有关;
?当第一次匹配成功以后,uri里面的里面路径换成匹配结果后,还会到配置文件中继续匹配?[/color]
location / { //匹配uri中的"/"
}
[b]rewrite 重写,主要用在server 和 location中[/b]
语法:
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;
}