2017-07-09 66 views
0

我使用nginx的在泊塢窗,這是我的配置Nginx泊塢窗nginx的出現「502」 .1上游服務器暫時關閉,同時連接到上游

server { listen 80;  server_name saber; 

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

    location /saber {  
     proxy_pass http://localhost:8080; 
     proxy_redirect off;  
     proxy_set_header Host $host;  
     proxy_set_header X-Real-IP $remote_addr;   
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
     proxy_buffer_size 4k;  
     proxy_buffers 4 32k;   
     proxy_busy_buffers_size 64k;  
     proxy_connect_timeout 90; 
    } 

} 

,當我在瀏覽器中使用「http://localhost/saber/blog/getBlog.do」,瀏覽器給我與「502」的錯誤。 和nginx的error.log有新的。

2017/07/09 05:16:18 [warn] 5#5: *1 upstream server temporarily disabled while connecting to upstream, client: 172.17.0.1, server: saber, request: "GET /saber/blog/getBlog.do HTTP/1.1", upstream: "http://127.0.0.1:8080/saber/blog/getBlog.do", host: "localhost" 

我可以保證「http://127.0.0.1:8080/saber/blog/getBlog.do」在瀏覽器中有反應成功。我找到答案是「/ usr/sbin/setsebool httpd_can_network_connect true」,這是問題url「nginx proxy server localhost permission denied」,但我用win10中的docker,nginx容器don t hava setsebool,because the container don找到SELinux。 這一切,預先感謝您。

回答

3

本地主機的每個容器內(如nginx的容器)是不同的從本地主機以外的容器上。每個容器默認都有自己的網絡名稱空間。您不需要指向本地主機,而需要將您的容器放在同一個碼頭網絡上(而不是默認橋接網絡),並將容器或服務名稱與Docker內置的DNS進行連接。目標端口也將是容器端口,而不是主機上的發佈端口。

+0

哦,我也意識到問題的網絡。最後的原因,我改變了本地主機在「proxy_pass的http://本地主機:8080」到「10.2.8.158」(這是IPv4的在我的電腦)。那的it.Thanks 。 –

+0

這會將您連接到碼頭以外的地方,然後再返回。如果您在碼頭網絡中運行,他們可以直接將容器連接到容器,這更便於攜帶。 – BMitch

相關問題