docker nginx出现“502”.1上游服务器连接上游时暂时被禁用

我在docker中使用nginx,这是我的nginxconfiguration

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 ”在浏览器中有响应成功。 我在其他问题尝试search答案,我find一个答案是“/ usr / sbin / setsebool httpd_can_network_connect true”,这是问题的URL“ nginx代理服务器本地权限被拒绝 ”,但我使用的是在win10中的docker,nginx容器don t hava setsebool,because the container don找不到SELinux。 这一切,先谢谢您。

每个容器内的Localhost(如nginx容器)与容器外部的localhost不同。 每个容器默认都有自己的networking名称空间。 您不需要指向本地主机,而需要将您的容器放在同一个dockernetworking(而不是默认桥接networking)上,并使用容器或服务名称与Docker内置的DNS进行连接。 目标端口也将是容器端口,而不是主机上的发布端口。