我想设置一个Nginx反向代理,它可以正常工作,但是如果设置network_mode: "host",它就会停止工作,因为它找不到其他码头容器的主机名。我有一个web容器和一个nginx容器。
我得到以下错误:reverseproxy_1 | nginx: [emerg] host not found in upstream "web:80" in /etc/nginx/nginx.conf:10
我的Nginx conf文件是:
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream docker-web {
server web:80;
}
server {
listen 8080;
location / {
proxy_pass http://docker-web;
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_set_header X-Forwarded-Host $server_name;
}
}
}我的docker-compose.yml文件是:
version: '2'
services:
redis:
image: "redis:alpine"
web:
depends_on:
- redis
build: .\app
volumes:
- .\app:/code
restart: always
reverseproxy:
image: reverseproxy
network_mode: "host"
ports:
- 8080:8080
depends_on:
- web我需要将network_mode设置为宿主,否则X-Forwarded-For会出错。
发布于 2017-07-23 16:28:37
我成功地使用了Linux主机,而不是Windows,这意味着我不需要使用network_mode:" host“。我还必须将Python代码更改为
request.environ.get('HTTP_X_REAL_IP', request.remote_addr)从…
request.environ['REMOTE_ADDR']https://stackoverflow.com/questions/45266404
复制相似问题