手机版 收藏 导航

Nginx 在 Docker 容器中如何获取客户端 IP 地址

原创   www.link114.cn   2025-06-16 10:56:59

Nginx 在 Docker 容器中如何获取客户端 IP 地址

在 Nginx 运行于 Docker 容器中的情况下, 获取客户端的真实 IP 地址可能会遇到一些挑战。这是因为 Docker 容器通常会使用网络地址转换 (NAT) 来隔离容器的网络, 将容器的内部网络映射到主机的网络接口上。

为在 Nginx 中获取客户端的真实 IP 地址, 可以采用以下几种方法:

  1. 使用 X-Forwarded-For 头部: 当 Nginx 位于反向代理或负载均衡器的后端时, 可以从 X-Forwarded-For 头部获取客户端的真实 IP 地址。在 Nginx 配置中, 可以使用 $http_x_forwarded_for 变量来获取该值。
  2. 使用 realip 模块: Nginx 提供 realip 模块, 可以根据客户端的连接信息获取真实的 IP 地址。可以在 Nginx 配置中添加以下指令来启用该模块:
    real_ip_header X-Forwarded-For;
        set_real_ip_from 172.16.0.0/12;
        
  3. 使用 proxy_protocol: 负载均衡器支持 proxy_protocol, 可以在 Nginx 配置中启用该协议, 以获取客户端的真实 IP 地址。在 Nginx 配置中添加以下指令:
    listen 80 proxy_protocol;
        real_ip_header proxy_protocol;
        set_real_ip_from 172.16.0.0/12;
        

通过以上方法, 可以在 Nginx 运行于 Docker 容器中的情况下, 获取客户端的真实 IP 地址, 以便进行日志记录、访问控制等操作。