nginx中proxy_set_header中HTTP_X_FORWARDED_FOR和X-Real-IP作用
- 0次
- 2021-05-31 12:56:56
- idczone
做了个实验,使用php,test.php代码如下:
//php获取ip的算法
$remoteaddr=$_SERVER["REMOTE_ADDR"];
echo $remoteaddr;
echo "---";
$remotehost=$_SERVER["REMOTE_HOST"];
echo $remotehost;
echo "---";
$xforwardedfor=$_SERVER["HTTP_X_FORWARDED_FOR"];
echo $xforwardedfor;
echo "---";
$xrealip=$_SERVER["HTTP_X_REAL_IP"];
echo $xrealip;
?>
然后对于配置1
proxy_set_header X-Real-IP $remote_addr;
p大带宽服务器roxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
server_name bbb.com;
proxy_pass aaa.com;
访问bbb.com/test.php得到
221.214.216.194---221.214.216.194---228.94.9.112, 192.168.0.1---192.168.0.1
之后去掉proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;这一行,既配置2后在实验
得到221.214.216.194---221.214.216.194---228.94.9.112---192.168.0.1---1.1
也就是说$_SERVER["HTTP_X_FORWARDED_FOR"]里面的内容变了少了192.168.0.1这一内网ip
但是我要怎么配置才能让test.php记录到的地址和不通过反向代理直连的时候一样呢?
注:直连的时候aaa.com/test.php结果为:228.94.9.112---228.94.9.112---------
web 服务器是 nginx?
可以了解下 realip 模块:http://wiki.nginx.org/HttpRealipModule
-_____- 后端服务器如果也是nginx的话记得加上
x-real-ip 前端IP;
http://blog.sonitech.org/2010/05/21/%E5%A4%9A%E7%BA%A7-nginx-%E4%BC%A0%E9%80%92%E5%AE%A2%E6%88%B7%E7%AB%AF-ip/
如果是apache做web服务器
http://www.openinfo.co.uk/apache/extract_forwarded-2.0.2.tar.gz
被反向代理的web服务器是租用的虚拟主机
我在看看,没注释比较难看懂