加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

nginx中location匹配顺序

发布时间:2020-12-13 21:42:28 所属栏目:Nginx 来源:网络整理
导读:table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0" tr td span style="font-size: 16px;"一、location语法 /td /tr /table 语法: Syntax: location [ = | ~ | ~* | ^~ 分类: 正则location和普通location
<tr>
<td><span style="font-size: 16px;">一、location语法</td>
</tr></table>

语法:

Syntax: location [ = | ~ | ~* | ^~

分类:

正则location和普通location

~”表示区分大小写;“~*”表示不区分大小写

“^~”中的“^”表示非,“~”表示正则,意思为不要继续匹配正则

“=”也表示阻止正则location,和“^~”的区别为:“^~”依然遵守“最大前缀”匹配;而“=”必须是严格匹配。

“@?”是用来定义“Named Location?”的(可以理解为独立于“普通location”和“正则location”之外的第三种类型),这种“Named Location?”不是用来处理普通的HTTP?请求的,它

是专门用来处理“内部重定向(internally redirected?)”请求的。

注意:这里说的“内部重定向(internally redirected?)”是不需要跟浏览器交互的,纯粹是服务端的一个转发行为。

<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0">

匹配顺序总结为以下两点:

1.匹配的顺序是先匹配普通字符串,然后再匹配正则表达式。另外普通字符串匹配顺序是根据配置中字符长度从长到短,也就是说使用普通字符串配置的location顺序是无关紧要的,反正最后nginx会根据配置的长短来进行匹配,但是需要注意的是正则表达式按照配置文件里的顺序测试。找到第一个匹配的正则表达式将停止搜索。2.一般情况下,匹配成功了普通字符串location后还会进行正则表达式location匹配。有两种方法这种行为,其一就是使用“=”前缀,这时执行的是严格匹配,并且匹配成功后立即停止其他匹配,同时处理这个请求;另外一种就是使用“^~”前缀,如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。

<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0">

<tr>
<td><span style="font-size: 16px;">三、注意事项</td>
</tr></table>

1.nginx匹配顺序是先匹配普通location,在匹配正则location;

2.普通匹配规则无顺序无论写在配置文件的那个地方都一样,但是正则匹配则是按照匹配配置文件中由上到下的先后顺序匹配;

更多详情参考官网:http://nginx.org/en/docs/http/ngx_http_core_module.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读