Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 使用Docker--net=host并通过主机名连接到其他容器_Nginx_Docker_Docker Compose_Nginx Reverse Proxy - Fatal编程技术网

Nginx 使用Docker--net=host并通过主机名连接到其他容器

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

我想设置一个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 {

    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']