apache 经过代理分发后 php获取客户端ip地址

作者: black_wizard 分类: apache,php,php,未分类 发布时间: 2018-05-04 08:47

<VirtualHost *:80>
ServerAlias XXX.XXX.com
ProxyPass / http://10.26.21.73/
ProxyPassReverse / http://10.26.21.73/
</VirtualHost>

php
$_SERVER[‘HTTP_HOST’]在客户的环境里,取得的值总是程序所在的服务器在其局域网内的ip值
在代理的情况下 使用
[HTTP_X_FORWARDED_HOST]

$host = isset($_SERVER[‘HTTP_X_FORWARDED_HOST’]) ? $_SERVER[‘HTTP_X_FORWARDED_HOST’] : (isset($_SERVER[‘HTTP_HOST’]) ? $_SERVER[‘HTTP_HOST’] : $_SERVER[‘SERVER_NAME’].($_SERVER[‘SERVER_PORT’]==’80’ ? ” : ‘:’.$_SERVER[‘SERVER_PORT’]));

客户端ip地址 isset($_SERVER[‘HTTP_X_FORWARDED_FOR’])?$_SERVER[‘HTTP_X_FORWARDED_FOR’]:$_SERVER[‘REMOTE_ADDR’];