使用华为云CDN之后如何读取真实访客IP
【摘要】 网站经常会需要读取访客的IP,但是使用CDN或者WAF之后,你使用 REMOTE_ADDR 读取到的IP地址其实是CDN节点的IP,不是访客真实的IP。那么如何才能读取访客真实的IP呢?前段时间试用了华为云的CDN之后就遇到了这个问题。经过测试,发现华为云的CDN可以使用 HTTP_CDN_SRC_IP 来读取访客的真实IP。
网站经常会需要读取访客的IP,但是使用CDN或者WAF之后,你使用 REMOTE_ADDR 读取到的IP地址其实是CDN节点的IP,不是访客真实的IP。
那么如何才能读取访客真实的IP呢?前段时间试用了华为云的CDN之后就遇到了这个问题。
经过测试,发现华为云的CDN可以使用 HTTP_CDN_SRC_IP 来读取访客的真实IP。
PHP Code
1 | $ip = $_SERVER['HTTP_CDN_SRC_IP']) |
ASP Code
1 | ip = Request.ServerVariables("HTTP_CDN_SRC_IP") |
这样之后就能用 $ip 或 ip 来使用真实IP了。
但是还有一个问题,我们不用CDN的时候,又需要修改代码来使用 REMOTE_ADDR 读取访客IP,非常麻烦。
所以我们可以将代码进行修改,让我们无论在什么情况下,读取的都是真实的访客IP。
先看代码:
PHP Code
1 2 3 4 5 6 7 8 | if (isset($_SERVER['HTTP_CDN_SRC_IP'])){//判断CDN IP是否存在,如果存在 $IP = $_SERVER['HTTP_CDN_SRC_IP'];}else {//如果CDN IP不存在,则 $IP = $_SERVER['REMOTE_ADDR'];} |
ASP Code
1 2 3 4 5 6 | if Request.ServerVariables("HTTP_CDN_SRC_IP")<>"" then'判断CDN IP不为空 ip = Request.ServerVariables("HTTP_CDN_SRC_IP")else ip = Request.ServerVariables("REMOTE_ADDR")end if |
是不是很简单,后续可以使用 $ip 和 ip 变量来调用真实IP了。
本文同步发布于个人网站:https://www.icoa.cn/a/857.html
原创文章,未经允许禁止转载 !
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)