网上搜索各种方法,包括这种“X-Forwarded-For : 用户 IP, 代理服务器 1-IP, 代理服务器 2-IP, 代理服务器 3-IP, ….”、什么Nginx设置都试过也不行。其它这个没有严格的规范和标准,所以不同商家会有不同的设置方法。作为开发者,最简单方法应该是输出当前头部信息进行对比。比如PHP:print_r($_SERVER) 。查看里面哪个变量的IP和ip138.com显示的IP是一样的,那基本就是那个变量了。
本人测试后自己写了一个取真实IP函数,适用未用CDN和使用阿里CDN、百度CDN后
- #阿里百度CDN后真实IP
- function AbCDN_ip()
- {
- $IP=false;
- if(!empty($_SERVER["HTTP_CF_CONNECTING_IP"])){
- $IP=trim($_SERVER["HTTP_CF_CONNECTING_IP"]);
- }elseif(!empty($_SERVER["HTTP_ALI_CDN_REAL_IP"])){
- $IP=trim($_SERVER["HTTP_ALI_CDN_REAL_IP"]);
- }
- return htmlspecialchars($IP?$IP:$_SERVER['REMOTE_ADDR']);
- }