使用CDN后如何获取访客真实IP

逆风 系统维护评论175字数 851阅读模式

前言

在使用CDN后,服务器获取到的IP是CDN节点的回源IP。这样就造成了网站日志无法反映真实情况,也对垃圾评论的封禁产生了影响。
以下方法需要CDN支持HTTP_X_FORWARDED_FOR

操作方法

typecho

在Typecho站点根目录里的config.inc.php添加下面这段代码:

/**使用CDN后获取访客真实ip*/
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
  $_SERVER['REMOTE_ADDR'] = $list[0];
}

wordpress

将代码添加到wp-config.php

/**使用CDN后获取访客真实ip*/
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
  $_SERVER['REMOTE_ADDR'] = $list[0];
}

Emlog

打开
/include/lib/function.base.php
找到获取用户ip地址的函数组,修改为以下内容:

/**
 * 获取用户ip地址
 */
function getIp() {
    $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $ip = $list[0];
    }
    if (!ip2long($ip)) {
        $ip = '';
    }
    return $ip;
}

Nginx

在Nginx的配置重http项目下添加:

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;

转载请保留原文链接
逆风
  • 本文由 发表于 2020年3月9日 06:00:00
  • 转载请务必保留本文链接:https://blog.smallxu.com/post/92/
评论  0  访客  0
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: