前景摘要:从上了GRE之后多了一种访问博客服务器的方式:Client->(Direct)->Server->(GRE)->Client,GRE选择性路由中国大陆ipv4(说明白点,回程经过GRE),访问速度应该大概也许会比过一遍CloudFlare快,不过没想到获取用户真实IP地址倒成了一个问题。
环境:Wordpress 5.6.1,WP Statistics 13.0.6,PHP 7.4.12
由于不通过CDN没有HTTP_X_FORWARDED_FOR
头,在尝试了2个小时之后,试图通过nginx添加header解决问题的方案彻底失败,于是决定直接修改插件源代码,结果发现就一行代码的事情。。。
具体操作:文件:wp-statistics/includes/class-wp-statistics-ip.php
,第79行,将原来的$ip = self::$default_ip;
修改为$ip = $_SERVER['REMOTE_ADDR'];
这么做的作用就是,最后若通过插件设置中配置的项获取不到有效IP,将其设为$_SERVER['REMOTE_ADDR']
,虽然并不保险,但足以应对99%的情况。(想保险就再加一次IP有效性验证,我只是懒得加了)
用一张图描述我现在的心情吧:
Views: 113