满天点点星辰 2023-12-13 09:15 采纳率: 50%
浏览 26

nginx如何获取访问的真实ip

nginx日志中都是访问ip,如果客户端的ip被代理了,如何获取客户端访问的真实ip。

  • 写回答

1条回答 默认 最新

  • 小孟多 2023-12-13 11:10
    关注

    在Nginx中,要获取客户端访问的真实IP,需要考虑代理的情况。当客户端的IP地址被代理服务器修改时,Nginx提供了几个配置选项来获取真实IP。

    首先,你可以通过$proxy_protocol_addr变量获取客户端真实IP地址。这个变量会返回代理服务器发送的PROXY协议头部中的源IP地址。你可以在Nginx配置文件中使用以下语句:

    location / {
        set_real_ip_from <代理服务器IP>;  # 设置代理服务器的IP地址
        real_ip_header proxy_protocol;     # 指定代理服务器添加的头部字段
    
        # 其他配置...
        
        # 获取真实IP并存储在变量$client_ip中
        set $client_ip $proxy_protocol_addr;
        
        # 根据需要使用$client_ip变量
        
        # 其他配置...
    }
    
    
    

    上述配置中,我们使用set_real_ip_from指令来指定代理服务器的IP地址。然后,我们使用real_ip_header指令来指定代理服务器添加的头部字段,通常是proxy_protocol,表示使用PROXY协议。

    接下来,我们使用set指令将$proxy_protocol_addr值存储在$client_ip变量中。你可以根据需要在后续的配置中使用$client_ip变量。

    需要注意的是,配置文件中的具体指令和变量名可能会根据你的实际情况略有不同。请确保适当地调整配置以适应你的代理设置。

    评论

报告相同问题?

问题事件

  • 修改了问题 12月13日
  • 创建了问题 12月13日