前言

在使用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;
本文作者:博主:
本文地址: https://blog.blueskyclouds.com/xtwh/26.html 
版权说明:转载时须注明出处及本声明。

广      告


最后修改:2020 年 09 月 01 日 05 : 57 PM
如果觉得我的文章对你有用,请随意赞赏