docker nginx出现“;502";。1上游服务器在连接到上游时暂时禁用

docker nginx出现“;502";。1上游服务器在连接到上游时暂时禁用,nginx,docker,Nginx,Docker,我在docker中使用nginx,这是我的nginx配置 server { listen 80; server_name saber; location / { root /usr/share/nginx; index index.html; } location /saber { proxy_pass http://localhost:8080; p

我在docker中使用nginx,这是我的nginx配置

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;   
    }

}
当我在浏览器中使用“”时,浏览器会给我一个“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"
我可以保证“”在浏览器中响应成功。 我尝试搜索其他问题的答案,我发现答案是“/usr/sbin/setsebool httpd\u can\u network\u connect true”,这是问题url“”,但我使用win10中的docker,nginx容器没有setsebool,因为容器没有找到SELinux。
所有这些,请提前感谢。

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

哦,我意识到问题的原因是网络。最后,我将“proxy_pass”中的本地主机更改为“10.2.8.158”(这是我计算机中的IPv4)。就这样。谢谢。这将在docker外部连接您,然后再返回docker。如果你在docker网络中运行东西,它们可以直接连接,从一个容器到另一个容器,这样更便于携带。我找到了解决方案。可以为您工作:-)