Nginx 使用Docker--net=host并通过主机名连接到其他容器
我想设置一个Nginx反向代理,它可以正常工作,但是如果我设置Nginx 使用Docker--net=host并通过主机名连接到其他容器,nginx,docker,docker-compose,nginx-reverse-proxy,Nginx,Docker,Docker Compose,Nginx Reverse Proxy,我想设置一个Nginx反向代理,它可以正常工作,但是如果我设置网络模式:“host”它会停止工作,因为它找不到其他docker容器的主机名。我有一个web容器和一个nginx容器 我得到以下错误: reverseproxy_1|nginx:[emerg]在/etc/nginx/nginx.conf:10的上游“web:80”中找不到主机 我的Nginx conf文件是: worker_processes 1; events { worker_connections 1024; } http
网络模式:“host”
它会停止工作,因为它找不到其他docker容器的主机名。我有一个web
容器和一个nginx
容器
我得到以下错误:
reverseproxy_1|nginx:[emerg]在/etc/nginx/nginx.conf:10的上游“web:80”中找不到主机
我的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
我需要将网络模式设置为主机,否则X-Forwarded-For
将出错。我使用Linux主机而不是Windows,这意味着我不需要使用网络模式:“主机”。我还必须将Python代码更改为
request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
从
嗨,答案完整吗?我也在尝试记录客户端ip,但我在这里玩得不开心。天哪。我一直在努力获取IP地址,同时也在寻找主机网络解决方案。你用这个救了我的命!
request.environ['REMOTE_ADDR']