nginx上有多个应用

时间:2011-08-11 12:15:11

标签: nginx

我正试图在nginx上的多个上游服务器之间路由流量,如下所示:

upstream app_a {
    server unix:/tmp/app_a.sock fail_timeout=10;
    # For a TCP configuration:
    # server localhost:8000 fail_timeout=0;
}
server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    index index.html index.htm;

    server_name localhost;

    root /home/ubuntu/app_a/www/staging/static;

    location ~ ^/app_a/(.*)$ {
        try_files $1 @proxy_to_app_a;
    }

    location @proxy_to_app_a {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_pass   http://app_a;
    }

不幸的是,应用程序不知道完整的uris并期望坐在root上 - 这意味着我需要在传递给应用程序时重新编写uri,这就是为什么我认为这可能有用:

   location ~ ^/app_a/(.*)$ {
        try_files $1 @proxy_to_app_a;
    }

如果位置只是/(由于上述根本问题),该应用程序正常工作,但这种基于正则表达式的解决方案似乎无法正常工作。我需要做什么才能使应用在网址中获得/而不是app_a

谢谢

1 个答案:

答案 0 :(得分:4)

location /app_a/ {
    rewrite /app_a/(.*) /$1 break;
    proxy_set_header Host $http_host;
    proxy_pass http://app_a;
}