docker nginx出现"502".1上游服务器在连接上游时暂时禁用

Z.Q*_*Qng 0 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;   
        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;   
    }

}
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中使用" http://localhost/saber/blog/getBlog.do "时,浏览器会给出"502"错误.和nginx的错误.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"
Run Code Online (Sandbox Code Playgroud)

我可以保证" http://127.0.0.1:8080/saber/blog/getBlog.do "在浏览器中有响应成功.我尝试在其他问题寻找答案,我找到了答案是"/ usr/sbin目录/ setsebool httpd_can_network_connect真",这是问题的URL" nginx的代理服务器本地主机权限被拒绝 ",但我用win10的泊坞窗,nginx的容器不要t hava setsebool,because the container don牛逼找到SELinux.这一切,谢谢你提前.

BMi*_*tch 7

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

  • 这样可以将您连接到docker外部,然后再连接回去。如果您在docker网络中运行事物,它们可以直接将容器连接到容器,这更加便于携带。 (2认同)