1

我的客户 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 配置参数。提前感谢您的帮助。

带着敬意

史蒂夫

4

0 回答 0