我在docker中使用nginx,这是我的nginx configure
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 {{ 1}找不到SELinux。 这一切,谢谢你。
答案 0 :(得分:7)
每个容器内的Localhost(如nginx容器)与容器外的localhost不同。默认情况下,每个容器都有自己的网络命您需要将容器放在同一个docker网络(而不是默认的桥接网络)上,而不是指向localhost,并使用容器或服务名称与Docker内置的DNS进行连接。目标端口也将是容器端口,而不是主机上的已发布端口。