配置nginx将http路由到不同的上游

时间:2014-07-17 14:39:56

标签: http nginx

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内容将请求路由到不同的上游?

1 个答案:

答案 0 :(得分:0)

我使用了成功的位置块,如下所示:

upstream A {
    server aa:8080;
}

location ~ ^/aaa/ {
  proxy_pass http://A;
}

差异在于使用正则表达式匹配和代理通过上游名称(转换为伪URL)而不是真实的URL /端口。