【发布时间】:2013-09-26 09:37:55
【问题描述】:
我有一台通过 Fortigate 40C 连接到互联网的服务器。当我的php代码调用$_SERVER['REMOTE_ADDR']时,它返回的是路由器(fortigate)的IP地址,而不是访问php脚本的远程IP。
这是为什么?
【问题讨论】:
-
原始IP可能还在请求中。看看你是否能找到像
X_FORWARDED_FOR这样的X_标头。 -
我可以确认此行为,并添加其他信息。如果客户端和服务器在同一个 VLAN 上,phpinfo(), $_SERVER['REMOTE_ADDR'] 和 apache_getenv("REMOTE_ADDR") 都报告客户端 IP,但是如果客户端和服务器在不同的 VLAN 上,只有网关IP 节目。