给国外服务器的网站套了个香港反代加速一下,结果反代后各种ip拦截都出了问题。
查了下原来WordPress 获取用户IP似乎用的是 REMOTE_ADDR,这样反代或者使用cdn后就全是从反代机以及CDN 服务器的 IP。
这样的话,在 wp-config.php 文件或者主题文件中增加下面代码就可以获取 CDN 后访客的真实IP了。用解析后的 HTTP_X_FORWARDED_FOR 替换 REMOTE_ADDR。
// WordPress 使用 CDN 后获取访客真实 IP if( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) { $get_HTTP_X_FORWARDED_FOR = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = trim($get_HTTP_X_FORWARDED_FOR[0]); }
或者下面这段
//获取真实ip地址 if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; }