nginx中proxy_set_header中HTTP_X_FORWARDED_FOR和X-Real-IP作用

2012-09-03 16:15:07 +08:00
 shanyang
做了个实验,使用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;
proxy_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---------
17800 次点击
所在节点    NGINX
5 条回复
Cofyc
2012-09-03 16:18:57 +08:00
web 服务器是 nginx?

可以了解下 realip 模块:http://wiki.nginx.org/HttpRealipModule
feiandxs
2012-09-03 16:19:33 +08:00
-_____- 后端服务器如果也是nginx的话记得加上
x-real-ip 前端IP;
feiandxs
2012-09-03 16:20:58 +08:00
shanyang
2012-09-03 23:39:11 +08:00
@Cofyc 被反向代理的web服务器是租用的虚拟主机
shanyang
2012-09-03 23:42:32 +08:00
@feiandxs 我在看看,没注释比较难看懂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/46809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX