【发布时间】:2018-06-24 16:55:34
【问题描述】:
我在客户端的网络上有两台 Windows 服务器,其中一台服务器 (S1) 具有公共 IP,并且端口将请求转发到在另一台没有公共 IP 的服务器 (S2) 上运行在 Apache 中的 PHP Web 应用程序。
使用 PHP 和 Apache,S2 只将传入请求的远程地址视为 S1 的内部 IP。
我希望 S2 能够查看实际客户端的 IP 地址以进行日志记录,但经过大量搜索和调试后,我无法使其正常工作。
请求如何流入和流出系统的粗略草图如下:
S1 不使用任何应用程序(反向代理等)转发这些请求,这意味着它不能将 X-FORWARDED-FOR 标头(或任何其他代理标头)附加到 HTTP 请求。
来自phpinfo() 的$_SERVER 数组的截断版本如下:
我发现这个问题的最佳答案特别提到了端口转发可能会“弄乱数据包”,这似乎正是在这种情况下发生的事情。
有什么办法可以看到远程客户端的IP而不是S1的IP?是否有可以为此在 Apache 或 PHP 中设置的配置?还是在网络层无法在应用层解决?我对这里的网络了解不多,不知道要搜索什么。
【问题讨论】:
标签: php apache httprequest ip-address portforwarding