【问题标题】:Getting Client IP Using PHP with Load Balancer (X-Forwarded-For Header)使用 PHP 和负载均衡器获取客户端 IP(X-Forwarded-For 标头)
【发布时间】:2016-01-25 19:12:02
【问题描述】:

这是我的情况:我有一个使用IIS 7 和 F5 负载均衡器设置的 PHP 网站。我需要检索正在访问服务器的客户端 IP 地址。

在这种情况下,$_SERVER['REMOTE_ADDR'] 返回负载均衡器的 IP 地址,而不是实际的客户端 PC。通常,我知道$_SERVER['HTTP_X_FORWARDED_FOR'] 将是返回实际客户端PC IP 地址的变量,但无论出于何种原因,这里都是空的。换句话说,返回 X-Forwarded-For 标头不会返回任何内容 - 我该怎么办?

【问题讨论】:

  • 您检查过$_SERVER 中的所有其他信息吗? <?php print_r($_SERVER);也许是$_SERVER['HTTP_CLIENT_IP']
  • 我的网络管理员没有向网站添加 X-Forwarded-For 标头 - 我让他们添加了此标头,现在一切正常。

标签: php http-headers load-balancing clientip


【解决方案1】:

如何添加 X-Forwarded-For 标头并配置 IIS 日志记录

X-Forwarded-For (XFF) HTTP 标头字段是一种标准方法,用于识别通过 Kemp LoadMaster 或任何代理连接到服务器的客户端的原始 IP 地址。

Kemp LoadMaster 允许我们在不透明使用 Layer7 时通过插入 X-Forwarded-For 标头将客户端的 IP 地址提供给目标 Real Server。

插入 X-Forwarded-For 标头允许 Real Server 在其日志中记录客户端源 IP 地址。

使用 LoadMaster 添加 X-Forwarded-For 标头可以作为全局设置或作为每个虚拟服务设置来完成。有关如何添加标题的步骤,请参阅下面的相关部分。

注意:添加 X-Forwarded-For 标头仅适用于带有 SSL 卸载的 HTTP 和 HTTPS 流量。

全局设置额外的 X-Forwarded-For 标头

在 LoadMaster 用户界面 (UI) 的主菜单中,选择 System Configuration > Miscellaneous Options > L7 Configuration > Additional L7 Header > X-Forwarded-For。

为每个虚拟服务设置额外的 X-Forwarded-For 标头

在 LoadMaster WUI 的主菜单中,选择虚拟服务 > 查看/修改服务。 单击相关虚拟服务上的修改。 展开高级属性部分。 在 Add HTTP Headers 下拉列表中,选择 X-Forwarded-For (No Via) 或 X-Forwarded-For (+ Via)。

在 Microsoft Server 2012 上配置自定义 IIS 日志记录字段

在 IIS 8.5 及更高版本中,可以添加自定义日志字段来记录 X-Forwarded-For 标头,以在不使用透明度时记录客户端的源 IP 地址。

导航到将使用 X-Forwarded-For 日志记录的站点,然后单击 Logging and Open Feature。

单击选择字段...选项

单击“添加字段...”选项。

如下所示配置字段:

字段名称:X-Forwarded-For

来源类型:请求头

源名称:X-Forwarded-For(语法重要)

点击确定两次。

单击日志记录选项页面右上角的应用。

现在,通过导航到虚拟服务并点击几次刷新来生成一些日志流量。

转到高级日志文件的位置并打开新创建的日志文件。

默认位置是 C:\inetpub\logs\LogFiles\W3SVC1。

【讨论】:

    猜你喜欢
    • 2014-10-22
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2020-07-04
    • 1970-01-01
    • 2013-10-03
    相关资源
    最近更新 更多