我的客户 http 请求通过 Squid 代理服务器连接到后端 apache Web 服务器。后端网络服务器中的 php 脚本获取客户端的真实 IP 地址,如下所示:
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip_address = $_SERVER['HTTP_CLIENT_IP'];
}
//whether ip is from proxy
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
//whether ip is from remote address
else
{
$ip_address = $_SERVER['REMOTE_ADDR'];
}
我使用以下参数设置 Squid 代理服务器以获得客户端的真实 ip:
via on
request_header_access X-Forwarded-For allow all
forwarded_for on
follow_x_forwarded_for allow localhost
我希望通过参数 $_SERVER['HTTP_X_FORWARDED_FOR'] 获得真实客户的 ips。但是,当我检查客户端浏览器的值时,只有 remote_addr 具有值:
- http_client_ip:未定义
- http_x_forwarded_for:未定义
- remote_addr => squid 代理服务器 ip 地址
我怀疑问题可能出在我的 squid 代理服务器设置中,但不知道应该更改哪些 Squid 配置参数。提前感谢您的帮助。
带着敬意
史蒂夫