05月09, 2016

让 WordPress 使用 CDN 后依然显示访客真实 IP

现在越来越多的网站都使用了 CDN ,但如果网站后台有访客 IP 地址显示的话,显示的访客 IP 地址就不是客户的 IP 地址而是 CDN 的 IP 地址。我们网站使用的是又拍云的 CDN ,根据它的官方文档得知他有特殊的回源请求头 Client-IP ,结合网上的教程修改出以下代码,只要把以下代码加入到主题目录下的 function.php 即可在网站后台显示客户真实 IP 地址。

function getIP()
{
 static $realIP;
 if (isset($_SERVER)){
 if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
 $realIP = explode(",", $_SERVER["HTTP_X_FORWARDED_FOR"]);
 $realIP = $realIP[0];
 } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
 $realIP = $_SERVER["HTTP_CLIENT_IP"];
 } else {
 $realIP = $_SERVER["REMOTE_ADDR"];
 }
 } else {
 if (getenv("HTTP_X_FORWARDED_FOR")){
 $realIP = getenv("HTTP_X_FORWARDED_FOR");
 } else if (getenv("HTTP_CLIENT_IP")) {
 $realIP = getenv("HTTP_CLIENT_IP");
 } else {
 $realIP = getenv("REMOTE_ADDR");
 }
 }
 $_SERVER["REMOTE_ADDR"] = $realIP;
}
add_action( "init", "getIP" );

本文链接:https://g.32ph.com/post/wordpress-use-cdn-real-ip.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。