我希望对refer不同的请求分配不同的server。
refer是a.com/a/0/1的转到demo服务器,其他的转到生产服务器,因此写了如下nginx配置。
map $http_referer $be_pool {
default be;
"~a\.com\/.*\/0\/.*" be_demo;
}
server {
...
location ~ ^/capi/(.*)$ {
proxy_pass http://$be_pool/$1;
}
}
但是当我发送请求到domain.com/capi/a/b的时候如果不带“a.com/a/0/1”的Refer那么server be可以收到正常的请求“be/a/b",但是带上“a.com/a/0/1"的Refer之后server bemo收到的请求却是"be_mode/",path丢失了。
请各位大神指教应该如何处理?
搞定了
nginx对未命名的正则变量只会匹配一次,所以map里的第二项就没有$1了,需要给正则变量命名,形如
location ~ ^/capi/(?<myuri>.*)$ {
就好了