多个上游代理失败

Multiple upstream proxies failing

我一直在尝试使用 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/ 正确访问各个应用程序了。

我发现我做错了什么。我有 server_name localhost;。将其更改为 server_name _; 解决了此问题。