我想我很蠢或者怎么的但我不明白这一点:
我正在使用 RemoteIPHeader X-Forwarded-For
VirtualHost 配置来确定我们 PHP 应用程序中用户的 GEO 位置。
但我也想在 apache 日志中记录客户端的远程 IP。
Apache 组合日志格式如下:
LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
根据文献:
RemoteIPTrustedProxy Directive
RemoteIPTrustedProxy 指令将一个或多个地址(或地址块)添加为可信地址,以显示用户代理 IP 的有效 RemoteIPHeader 值。与 RemoteIPInternalProxy 指令不同,此类代理报告的任何内联网或私有 IP 地址,包括 10/8、172.16/12、192.168/16、169.254/16 和 127/8 块(或 IPv6 公共 2000::/3 块之外)均不可信为用户代理 IP,并保留在 RemoteIPHeader 标头的值中。
就我而言,该指令如下所示:
RemoteIPTrustedProxy 172.31.0.0/16
我说的是信任来自这个本地子网的任何代理转发。
但是,当我设置这个时,Apache 停止记录远程 IP,因为转发代理现在有效?
所以如果我设置:
RemoteIPTrustedProxy 10.10.10.10
上面的 IP 不存在。那么来自的代理服务器172.31.0.0/16
现在无效,因此 apache 再次开始记录远程 IP 标头?
请尝试在这里给我一些指导,因为我显然不明白这一点。
多谢 !
答案1
如果您要使用 mod_remoteip,请将 %a 恢复为该格式。
在 bugzilla 中,mod_remoteip 会在从 %{X-Forwarded-For}i 中删除时填充 %a。因此,在具有一个受信任代理的简单情况下,由于 mod_remoteip,%a 将保存用于在 X-Forwarded-For 中查看的值