前言
开发有个小需求,因此需要添加一个额外的location
location /game_log/v1/ ##新加的额外location
location ~* /v1/(.*)
配置完后,发现不生效,查看日志,发现匹配到了第二个location。
location写法
优先级从高到低排序:
location = /path 精确匹配/path
location ^~ /path 匹配/path开头的
location ~ /path 匹配正则/path,区分大小写
location ~* /path 匹配正则/path,不区分大小写
location /path 匹配/path开头的
location / 匹配所有
原因
- 优先级
因为 ~*优先级大于空,因此先匹配 location ~* /v1/(.*)
- 正则
/v1/(.*) 并不是匹配以/v1/开头的,而是只要包含/v1/即可匹配
因/game_log/v1/包含v1,所以被 location ~* /v1/(.*)捕获
解决
方法1:
将location /game_log/v1/改为location ^~ /game_log/v1/
方法2:
将location ~* /v1/(.*)改为location ~* ^/v1/(.*)