我有这两条规则:
location ~* ^.+\.(jpg|jpeg|gif|css|js|png)$ {
proxy_pass http://127.0.0.1:44843$request_uri;
}
location /pc {
proxy_pass http://127.0.0.1:12345$request_uri;
}
URI:
/pc/asser/somefile.js
属于第二条规则,为什么?
这是“location / pc”规则优先级较低的问题吗?
答案 0 :(得分:1)
Nginx documentation定义它:
指令按以下方式处理:
所以你也应该为/ pc使用正则表达式:
location ~ /pc/.* { proxy_pass http://127.0.0.1:12345$request_uri; }
答案 1 :(得分:0)
首先使用前缀字符串(前缀位置)定义的nginx检查位置。 然后,它会按照它们在配置文件中的出现顺序检查使用正则表达式定义的位置。
答案 2 :(得分:0)
http://nginx.org/en/docs/http/ngx_http_core_module.html#location指定查看nging位置指令的顺序:
To find a location matching a given request, nginx first checks locations defined
using the prefix strings (prefix locations). Among them, the most specific one is
searched.
这里的问题基本上是前缀位置总是优先于正则表达式
因此,在您的配置中,如果两个块都匹配,则它是/ pc前缀优先级