请问下为什么我 PHP 获取客户端 IP 通过 CDN 后就获取不到了。

2015-02-14 00:02:37 +08:00
 156007766

没加CDN时 获取的IP都是客户的IP
加了CDN后 获取的IP都不是客户的IP了 全是CDN的IP

5225 次点击
所在节点    PHP
10 条回复
oott123
2015-02-14 00:05:10 +08:00
var_dump($_SERVER);
stanhou
2015-02-14 00:08:55 +08:00
CDN一般都提供原始IP转发的服务,看你用得哪家的了
156007766
2015-02-14 00:16:06 +08:00
嗯。刚翻手册搞定了。
用 $_SERVER["REMOTE_ADDR"]; 过不了CDN
可以组合用 $_SERVER["HTTP_X_FORWARDED_FOR"]
$_SERVER["HTTP_CLIENT_IP"] 获取客户端IP
cnbeining
2015-02-14 00:18:34 +08:00
具体得看下你CDN的文档。。。

不同CDN有可能用不同的header给你转发IP,记录那个就是。
lincanbin
2015-02-14 01:03:37 +08:00
aaaa007cn
2015-02-14 01:19:43 +08:00
当且仅当 REMOTE_ADDR 在 CDN 的 ip 范围内
才根据 CDN 提供的 http 头获取客户端 ip
tywtyw2002
2015-02-14 04:10:56 +08:00
xreal
msg7086
2015-02-14 06:33:20 +08:00
nginx realip module

警告!不要轻信SERVER头里的数据!
一定要做成只相信CDN转发过来的请求里的IP数据。
SERVER头是可以伪造的。
twl007
2015-02-14 06:34:56 +08:00
需要X-Forward_For…… 中转原始IP
changwei
2015-07-10 18:59:07 +08:00
HTTP_CF_CONNECTING_IP这个可以绕过cdn获取到客户端真实IP,我亲测有效

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

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

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

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

© 2021 V2EX