nginx的location与rewrite

location有定位的意思,根据uri来进行不同定位
语法:
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;
}

猜你喜欢

转载自zhengyong407.iteye.com/blog/2414868
今日推荐