代码之家  ›  专栏  ›  技术社区  ›  smallpepperz

有没有办法在Docker容器中将正确的远程地址传递给Nginx

  •  0
  • smallpepperz  · 技术社区  · 3 年前

    我有一个Nginx网络服务器,我正在一个docker容器中运行它。我遇到的问题是nginx access.log中的所有客户端IP地址都是172.19.0.1,即容器的网关。我希望显示给nginx的IP地址是客户端的真实IP地址。

    我尝试了一些解决方案,包括

    1. 使用Nginx realip 单元
        set_real_ip_from 172.19.0.1;
        real_ip_header X-Real-IP;
        real_ip_recursive on;
    

    仍然记录了网关ip

    1. 将端口设置为 host 网络模式,这是无效的,因为我在macOS上,它只在Linux上受支持。

    我使用的dockerfile看起来是这样的

    version: "3"
    services:
        nginx:
            container_name: nginx
            ports:
                - target: 80
                  published: 80
                - target: 443
                  published: 443
            volumes:
                # [my volumes]
            restart: unless-stopped
            image: nginx
    
    0 回复  |  直到 3 年前