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变量。
需要注意的是,配置文件中的具体指令和变量名可能会根据你的实际情况略有不同。请确保适当地调整配置以适应你的代理设置。
解决 无用评论 打赏 举报