VPS前后端分离使WordPress无法记录访客IP解决之法
最近没怎么注意,今天看了评论,发现所有评论的ip都是127.0.0.1。而且是在配置squid之后的评论如此(话说到现在都还没弄好,烦)。
因为前后端分开了,当客户端请求访问动态页面时会被前端反向代理给后端处理,所以Wordpress读到的是localhost。。。为了解决,只能让WP更智能一点,录入真实访问IP
(而不是请求IP)。
解决办法,在wp-config.php的第2行(即<?php之后),添加
1
2
3
$_SERVER['HTTP_X_FORWARDED_FOR']和$_SERVER['REMOTE_ADDR']都是用于获取客户端IP的,全局变量,因此可以直接调用。
$_SERVER['REMOTE_ADDR']是正在浏览当前页面用户的 IP
地址,由于服务器自身启用了反向代理,所以这个变量始终记录IP为127.0.0.1。
$_SERVER["HTTP_X_FORWARDED_FOR"]用于获取使用代理服务器用户的IP,但有时读取的仍然是代理服务器本身的IP。
因为X-Forwarded-For头的记录格式是:client1,proxy1,proxy2,所以在上面的代码中我们取的是第一个值。
原文链接:http://kn007.net/topics/2012/08/27/server-before-and-after-the-end-of-the-separation-wordpress-unable-to-record-visitors-ip-solution-method/
因为前后端分开了,当客户端请求访问动态页面时会被前端反向代理给后端处理,所以Wordpress读到的是localhost。。。为了解决,只能让WP更智能一点,录入真实访问IP
(而不是请求IP)。
解决办法,在wp-config.php的第2行(即<?php之后),添加
1
2
3
$_SERVER['HTTP_X_FORWARDED_FOR']和$_SERVER['REMOTE_ADDR']都是用于获取客户端IP的,全局变量,因此可以直接调用。
$_SERVER['REMOTE_ADDR']是正在浏览当前页面用户的 IP
地址,由于服务器自身启用了反向代理,所以这个变量始终记录IP为127.0.0.1。
$_SERVER["HTTP_X_FORWARDED_FOR"]用于获取使用代理服务器用户的IP,但有时读取的仍然是代理服务器本身的IP。
因为X-Forwarded-For头的记录格式是:client1,proxy1,proxy2,所以在上面的代码中我们取的是第一个值。
原文链接:http://kn007.net/topics/2012/08/27/server-before-and-after-the-end-of-the-separation-wordpress-unable-to-record-visitors-ip-solution-method/
还没人转发这篇日记