网站如果挂到 cdn,不就不能获取到来访用户的真是 ip 了吗

2016-05-09 14:42:42 +08:00
 liangmishi

网站挂上 cdn ,感觉还挺快的,但是问题来了,服务器上获取到的 ip 都是 cdn 的代理 ip ,那这样的话不就不能准确的判断访问者的 ip 了吗

6536 次点击
所在节点    Python
20 条回复
Havee
2016-05-09 15:17:57 +08:00
set_real_ip_from cdn_ip;
ryd994
2016-05-09 16:31:29 +08:00
会添加 X-forwarded-for 或者 client-IP
注意验证来源 IP ,只有来自 CDN IP 地址段的才信任这些 header
liangmishi
2016-05-09 17:34:05 +08:00
@ryd994 嗯嗯,确实如此,在 header 里可以找到 X-forwarded-for ,这就是真实 ip 。 不过为什么还要验证是否来自 CDN 呢。既然是挂了 CDN ,那所有访问都应该是从 CDN 代理服务器那边过来的。除非是知道 ip ,直接通过 ip 访问
liangmishi
2016-05-09 17:38:21 +08:00
@Havee 在 nginx 里配置是吗!我去试试
kn007
2016-05-09 17:40:56 +08:00
让 CDN 传输过来指定头部,后端只信任指定的头部
bossfrog
2016-05-09 18:30:00 +08:00
所以每个请求都回源好了(滑稽脸)
bossfrog
2016-05-09 18:42:24 +08:00
小明被恶霸殴打,雇了保镖来招架,爽是爽了,但是不知道有谁想殴打他了,大失所望!
iyaozhen
2016-05-09 19:12:39 +08:00
CDN 应该支持向后传客户端 IP 吧
liangmishi
2016-05-09 19:30:37 +08:00
@kn007 cnd 有传一个 X-forwarded-for 头
liangmishi
2016-05-09 19:33:45 +08:00
@bossfrog 要么被打 要么失望...
liangmishi
2016-05-09 19:33:59 +08:00
@iyaozhen 支持的, X-forwarded-for
lhbc
2016-05-09 19:58:53 +08:00
注意 X-forwarded-for 可能有多个 IP ,如果浏览器使用了代理
liangmishi
2016-05-09 20:00:48 +08:00
@lhbc 取最后一个
xuhaoyangx
2016-05-09 20:07:39 +08:00
@liangmishi X-forwarded-for 最后一个不一定对,有些网络会把内网的 ip 带上
liangmishi
2016-05-09 22:51:52 +08:00
@xuhaoyangx 这个...那怎么办
shiji
2016-05-09 22:56:46 +08:00
具体取决的 CDN 。
我记得 Incapsula 我试过,会直接把 X-forwarded-for 改成发送数据包的客户 IP ,客户端是没法伪造的,伪造的会被直接覆盖掉。所以也不会存在多个 X-forwarded-for 的情况
qgy18
2016-05-09 23:25:52 +08:00
liangmishi
2016-05-09 23:53:11 +08:00
@shiji 我试了下 伪造了个 X-forwarded-for 然后在服务器端 获取 X-forwarded-for 里面有真实的 ip 也有伪造的
liangmishi
2016-05-09 23:53:25 +08:00
@qgy18 受益匪浅
pine
2016-05-10 14:15:13 +08:00
统计代码不走 cdn 不就行了,多简单的事。

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

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

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

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

© 2021 V2EX