2016-07-04 17 views
0

我一直在使用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/正常訪問單個應用程序。

回答

0

我想出了我做錯了什麼。我有server_name localhost;。將其更改爲server_name _;已修復此問題。