前言
开发有个小需求,因此需要添加一个额外的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/(.*)