在 Nginx 的配置文件中,路由匹配的规则优先级如下:
-
=
前缀匹配:如果请求的 URI 与location
中的=
前缀完全匹配,则停止搜索其他location
并使用该location
。例如:
bashCopy codelocation = /abc { ... }
如果请求的 URI 为
/abc
,则会使用该location
。 -
^~
前缀匹配:如果请求的 URI 以location
中的^~
前缀匹配,则停止搜索其他location
并使用该location
。例如:
bashCopy codelocation ^~ /abc { ... }
如果请求的 URI 为
/abc/def
,则会使用该location
。 -
正则表达式匹配:如果请求的 URI 与
location
中的正则表达式匹配,则使用该location
。Nginx 会按照配置文件中location
出现的顺序进行正则表达式匹配,使用第一个匹配成功的location
。例如:
bashCopy codelocation ~ /abc.*\.html$ { ... }
如果请求的 URI 为
/abc123.html
,则会使用该location
。 -
前缀匹配:如果请求的 URI 以
location
中的前缀匹配,则使用该location
。Nginx 会按照配置文件中location
出现的顺序进行前缀匹配,使用第一个匹配成功的location
。例如:
bashCopy codelocation /abc { ... }
如果请求的 URI 为
/abc/def
,则会使用该location
。 -
没有匹配成功:如果没有任何
location
匹配成功,则使用默认location
。默认location
可以通过如下方式定义:markdownCopy codelocation / { ... }
该
location
会匹配任何请求的 URI。