upstream A {
server aa:8080;
}
upstream B {
server bb:8080;
}
server {
listen aa:8080;
location /aaa/ {
proxy_pass http://A/;
}
location /bbb/ {
proxy_pass http://B/;
}
location / {
rewrite (/aaa/(.*))$ http://aa:8080$1 break;
proxy_pass http://bb/;
}
在使用包含aaa的url接收请求时,我希望将请求路由到上游A,并将bbb路由到B.使用/ aaa /和/ bbb /的位置块不起作用。在重写时,我无法使用proxy_pass。 如果我添加($ uri~" aaa"),那么我会注意到日志 " AAA" match" / aaa / aaa",client:1.1.1.1,server :, request:" GET / aaa / aaa?wsdl HTTP / 1.1",host:" 1.2 1.3.4:8080"
如何根据URL内容将请求路由到不同的上游?
答案 0 :(得分:0)
我使用了成功的位置块,如下所示:
upstream A {
server aa:8080;
}
location ~ ^/aaa/ {
proxy_pass http://A;
}
差异在于使用正则表达式匹配和代理通过上游名称(转换为伪URL)而不是真实的URL /端口。