多个上游代理失败

时间:2016-07-04 13:59:48

标签: nginx reverse-proxy

我一直在使用Docker设置一组位于Nginx容器后面的Web应用程序。我正在使用docker-compose来管理不同的服务,并且所有单独的Web服务容器都可以正常工作,但是当我尝试从Nginx容器访问它们时,只有其中一个可以工作,而且它始终是我尝试的第一个访问。因此,如果我启动容器组并访问app1,那么我会按预期获得页面,但如果我转到app2则会出现50x错误。如果我重新启动组并首先转到app2然后我按预期获得页面,但如果我转到app1,我现在得到50x错误。我不确定我在Nginx配置中做错了什么。非常感谢一些帮助。

这是我的Nginx配置:

upstream app1_backend {
    server app1:8000;
}

upstream app2_backend {
    server app2:8000;
}

server {
    listen 80 default_server;

    server_name localhost;

    charset utf-8;

    #location / {
    #    root   /usr/share/nginx/html;
    #    index  index.html index.htm;
    #}

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location /static {
        alias /static;
    }

    location /app1/ {
        proxy_pass http://app1_backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /app2/ {
        proxy_pass http://app2_backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

我再次可以在http://app1:8000/http://app2:8000/正确访问各个应用程序。

1 个答案:

答案 0 :(得分:0)

我弄清楚我做错了什么。我有server_name localhost;。将其更改为server_name _;已修复此问题。