下面是两个 location,
location ~* ^/api/(blade-.*)|(ad-[0-9a-z]*-service)/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://fad_gateway;
}
location ~* ^/fad-ssp/api/(blade-.*)|(ad-[0-9a-z]*-service)/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
rewrite ^/fad-ssp/api/(.*)$ /$1 ;
proxy_pass http://ssp_gateway;
}
但实际情况下是, 我访问第 2 个地址的时候, 直接被第一个 location 匹配到了, 请问有什么办法分离吗 ?
1
Lax 2020-10-26 20:13:01 +08:00 1
匹配符号用错了,换成 ^~ 试试
|
2
jeesk OP 试了, 如果换成^~, 都不能匹配到了
|
3
Lax 2020-10-26 20:26:52 +08:00
把两条规则的先后顺序调整一下
|
4
jeesk OP 换了, 发现所有的 /api/ 的请求都走 /dsp-ssp/api/ 的匹配规则了
|
5
pubby 2020-10-26 20:35:41 +08:00 via Android
“|”的作用你理解错了吧
|
7
jeesk OP location ~* ^((?!fad-ssp))/api/(blade-.*)|(ad-[0-9a-z]*-service)/ {
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_buffering off; rewrite ^/api/(.*)$ /$1 break; proxy_pass http://fad_gateway; } location ~* ^/fad-ssp/api/(blade-.*)|(ad-[0-9a-z]*-service)/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_buffering off; rewrite ^/fad-ssp/api/(.*)$ /$1 break ; proxy_pass http://ssp_gateway; } |
10
jeesk OP 正解, 解决了, 的确是正则表达式有问题
|