使用华为云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)