Nginx 位置匹配
Posted
技术标签:
【中文标题】Nginx 位置匹配【英文标题】:Nginx location matches 【发布时间】:2011-07-11 11:32:56 【问题描述】:有什么区别:
location = /abc
和
locaton ~ /abc
【问题讨论】:
第二个看起来更酷:P(我认为第一个匹配确切位置,第二个使用常规 exp。但由于我不确定我不将其作为答案发布) 【参考方案1】:location = /abc
匹配精确的 uri /abc
location ~ /abc
是 uri 上的正则表达式匹配,表示任何包含 /abc
的 uri,
您可能想要:location ~ ^/abc
以 /abc
开头的 uri
而是
【讨论】:
您意识到您不需要正则表达式来匹配开头。这是 nginx 默认操作:location /abc ...
对@dalore 的评论说“我秒”。 /abc 正是 ~ ^/abc 所做的(至少对于我当前的 nginx 版本,centos 上的 1.10.2)。也许自从写了这个答案后它就改变了……进一步阅读here
速记,前面的说法不准确。 location /abc
只会匹配以/abc
或/abc/
开头的路由。这意味着它将匹配/abc/def
,但不匹配/abcdef
。正则表达式将匹配两者,因为它匹配字符串,而不是路由..
另外,location /abc
只会在没有其他位置与正则表达式匹配时匹配。所以location ~ ^/abc
优先于location /abc
,即使它稍后定义:keycdn.com/support/nginx-location-directive。以上是关于Nginx 位置匹配的主要内容,如果未能解决你的问题,请参考以下文章
Nginx Rewrite 与 Location 的网页匹配