在php中,一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者IP地址。
在php手册中的解释:
“HTTP_HOST”
当前请求的 Host: 头信息的内容。
在一些常见的php框架中,如PFC3和FLEA也是基于该预定义变量。
不过最近遇到一个问题,不能准确得到服务器的Ip地址。
原因:$_SERVER['HTTP_HOST']在客户的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。
由于客户的公司通过一台服务器连接至因特网,而程序所在的服务器,是通过域名映射出来的,也就是中间有个“代理”的过程。
因此$_SERVER['HTTP_HOST']在这样的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。
最后在symfony框架中找到替代的实现方法:
将
替换成:
然后,问题就解决了,可以获得真实的IP地址了。