国内大多数的CDN在回源访问的时候都会带上X_FORWARDED_FOR请求头,里面包含有HTTP的请求端真实的IP。但UPYUN CDN在回源的时候没有带X_FORWARDED_FOR请求头,所以原使用HTTP_X_FORWARDED_FOR获取访客真实IP的程序失效。

按照UPYUN CDN说明文档,UPYUN CDN 回客户源的时候会带这个 X_REAL_IP 的请求头下去,值为用户实际访问 CDN 的来源 IP 地址。同时为了兼容部分服务端程序,UPYUN CDN还额外还提供了 CLIENT_IP 请求头的支持,其值和 X_REAL_IP 相同。所以如果站点使用UPYUN做CDN加速,可以通过HTTP_CLIENT_IP或者HTTP_ X_REAL_IP来代替原HTTP_X_FORWARDED_FOR获取访客真实IP。
以Wordpress为例,可以在Wordpress配置文件wp-config.php第一个<?php 后面加入以下代码,使Wordpress获取访客的真实IP:
- /使用upyun后获取访客真实IP /
- /文章地址:http://www.duoluodeyu.com/2328.html /
- if(isset($_SERVER['HTTP_CLIENT_IP']))
- {
- $list = explode(',',$_SERVER['HTTP_CLIENT_IP']);
- $_SERVER['REMOTE_ADDR'] = $list[0];
- }
或
- /使用upyun后获取访客真实IP /
- /文章地址:http://www.duoluodeyu.com/2328.html /
- if(isset($_SERVER['HTTP_X_REAL_IP']))
- {
- $list = explode(',',$_SERVER['HTTP_X_REAL_IP']);
- $_SERVER['REMOTE_ADDR'] = $list[0];
- }
延伸阅读:
使用CDN后的WordPress怎样获取访客IP