WordPress4.0在LNAMP下获取ClientIP的Bug

虽然鹚酱一直都不怎么更新blog,但是并不代表没有用心去维护他。

事情是这样的,虽然今年二月份从凤女王的凤凰城机房迁移到了MultaCom机房,
然后八月末的晚上,凤女王突然hangout问我备份了VPS资料了没,
“啥,备份VPS资料?”
“MC机房被人DDOS攻击了,然后机房开了份罚单,但是招来DDOS的么客户却不肯交罚单,
于是咱只能把服务器迁出了呗,今晚9点服务器就得下架了。”
我一看表,都晚上8点一刻了:“卧槽!怎么不早告诉我”
“我早就发邮件了,你们都不理我,只能一个个通知了!”

立马SSH进去,把VPS上跑的应用打了个大包然后SCP回来,终于赶到9点之前完成了备份,
然后满怀庄重的在SSH里面敲了一句 sudo rm -rf / –no-preserve-root ✌(´◓q◔`)✌

总之这个机房确实不太平,先不说邻居被DDOS然后跟着遭殃,之前我的站也是被人狂扫,那个CPU和内存占用之高啊经常弄得VPS宕机。
嘛也是我这个512内存的VPS东西跑得太多啦 Apache, Nginx, PHP, Python, Mysql, MongoDB, PureFTPd, Shadowsocks……

我开始优化些东西,大概有这些吧,
首先把William大师的遗产,有问题的gravatar的cache代码给删掉了,这段代码确实有问题php发出的请求过多导致内存CPU飙涨。
然后就是把WP SuperCache这个插件卸了,说实在的这是我最喜欢的WP插件可以很大的提升WP的加载速度,但是这个插件会吃不少内存,嗯。
关掉了Mysql的InnoDB引擎,继续使用古老的MyISAM,InnoDB是个吃内存大户。
balabala的我也不记得还干了啥,总之现在的Blog也没少块肉。

但是其实上面的优化只是在一阵子内有效果,面对海量的请求还是抗不住的,
有我这边的问题也有KVM的问题,上面的优化其实是针对VPS优化的,因为凤凰君的KVM VPS控制不了CPU的使用率,
也就是说不是给你分配1GHZ的CPU用量,而是分配了一个核心给你。
是人写的代码都会出问题的,就算俺把乃的load艹到了10x倍,控制住Client的配额不就好了嘛。
那阵子有点忙我说不太想改代码,请求帮忙限制住VPS的CPU配额,结果弄得凤凰君很生气,最后不知道凤女王用了什么方法调节了吾的CPU配额,
其实就我个人感觉,根本就没控制住client的cpu用量啊,还是在怪我CPU用超了╮( ̄▽ ̄”)╭

所以对于有人恶意的扫站,我进入VPS用top观察了会儿,发现一大堆apache和nginx进程,
进程多不要紧,但是看起来是大部分都僵死了的节奏。
得了,最后写了个守护脚本,把nginx,apache,mysql……xxx每隔半个小时都重启一次。
扫站这些人咋就这么讨厌呢,想干下吾的服务器也不是件简单事儿呗。。

下面说正事儿,折腾了一个月后凤凰君终于把服务器给迁移到了ChinaCache的米帝机房,也就是blog现在搁置的地方,
出于对老客户补偿,凤凰說可以免费用到2016年6月,其实我没啥意见今年到期了就迁走吧。

VPS用的是Ubuntu 14.04 LTS,其他都还好就是Apache 2.4的改动很大,很多指令都废弃了或者有替代的指令了,
当然跟着遭殃的还有很多Apache的第三方Mod……

我依旧喜欢用Linux +Nginx +Apache +PHP +Myql这样的架构,兼容性很好,性能也不错,就是配置稍微麻烦一点。
但是我发现WP的评论IP又清一色的变成了 127.0.0.1,
明明mod_rapf插件也通过apt-get装了啊,难道源里面的插件有bug依旧得自己重新编译么。
于是把rpaf的代码下下来编译,但是发现编译通不过,得打个补丁就好了:
git clone git://gist.github.com/2716030.git
patch mod_rpaf-2.0.c 2716030/mod_rpaf-2.0.c.patch

补丁打了,rapf也跑起来了但是WP的CientIP获取依旧死活都是 127.0.0.1,忘了说了apache的rapd就是用来修正apache位于proxy后的ClientIP获取问题的。

我检查了一下apache的日志,发现日志里面的客户端ip毫无疑问是正常的,为了确定rpad模块是否工作正常,我先卸载了apache rapd模块,
然后又重新载入apache rapf模块,对比前后的变化如下图,毫无疑问rapf模块工作正常。

然后接下的问题可以确定了,要么是新版PHP的问题,或者问题就在WP上。
所以检查是不是新版PHP的ClientIP获取有问题很简单,写个小测试脚本就可以了:

<?php
echo ‘REMOTE_ADDR ‘ .$_SERVER[‘REMOTE_ADDR’] .'<br />’;
echo ‘HTTP_X_FORWARDED_FOR ‘ .$_SERVER[‘HTTP_X_FORWARDED_FOR’] .'<br />’;
echo ‘HTTP_CLIENT_IP ‘ .$_SERVER[‘HTTP_CLIENT_IP’] .'<br />’;
?>


如上图,PHP没有一点问题呀,所以毫无疑问的是WP自己在作死啊。
因为LNAMP实际上就是个代理架构,前端的Nginx Proxy给后端的Apache传递了一些额外的字段,其中就包括正确的ClientIP信息,
只是新版的Wordpress自己没去读这些字段而已。

其实也没啥大不了的,我对人家访客的IP一点都不感兴趣,
不像么朝廷的看板娘,总会用心的记录下你从哪里来的,和谐的很啦 (՞ةڼ◔)

也不打算修这个bug,如果你有需要把Wordpress评论部分的代码稍微改几行就好了,
但是估计乃改动WP的主题不太可能达到目的,得直接动WP的源码了,
然后只要WP一升级就把乃改过的代码又给覆盖啦✌(´◓q◔`)✌

说了这么多,其实不太想动WP的真正原因是——很久之前就有打算,不再使用Wordpress啦。
并不是说他不好,而是他提供了太多的功能我用不到,相应的Wordpress吃资源是大家都知道的,
强大的系统底层实现是比较复杂的,Wordpress提供插件系统,但是说老实话,
很多时候直接改动WP的源码要比阅读庞大的Wordpress插件开发指南要轻松很多啊。

实际上也确实如此,不仅仅是Wordpess,上次 玛格丽特·苏 姐姐要吾帮着弄下那susecn forum加点功能,
但是吾看着BBPress的插件文档就蛋疼==|||
然后问苏姐说可以直接改BBPress的代码,于是问题很快就解决了,,Ծ ◡ Ծ,,

嗯,其实吾自用的Blog系统已经开始写了,以吾现在的能力开发出一套完整的web系统是毫无压力的,
关键是自己写的东西想怎么弄就怎么弄,没有什么包袱,既不用考虑兼容也不用考虑如何协作,
所以在这里做个约定吧,毕竟吾很少下决心做么些事,但是一旦下定决心就停不下来,
挖坑不填可耻,就看什么时候能够写完啦~

About Mucid

My life is brilliant !
This entry was posted in Technology and tagged , , , , , , . Bookmark the permalink.

45 Responses to WordPress4.0在LNAMP下获取ClientIP的Bug

  1. prednisone for bronchitis says: Google Chrome 83.0.4102.0 Google Chrome 83.0.4102.0 Windows 7 x64 Edition Windows 7 x64 Edition

    Cialis Purchase

  2. Taigmasse says: Google Chrome 83.0.4086.0 Google Chrome 83.0.4086.0 Windows 10 Windows 10
  3. uphopay says: Google Chrome 83.0.4103.0 Google Chrome 83.0.4103.0 Windows 10 x64 Edition Windows 10 x64 Edition
  4. pneusaw says: Microsoft Edge 83.0.478.37 Microsoft Edge 83.0.478.37 Windows 7 x64 Edition Windows 7 x64 Edition
  5. Neurontine says: Google Chrome 83.0.4100.3 Google Chrome 83.0.4100.3 Windows 10 x64 Edition Windows 10 x64 Edition

    Discount Cheap Amoxicilina

  6. Plaquenil says: Google Chrome 83.0.4103.14 Google Chrome 83.0.4103.14 Windows 10 x64 Edition Windows 10 x64 Edition

    buy accutane mexico

  7. derfeinee says: Google Chrome 83.0.4103.44 Google Chrome 83.0.4103.44 Windows 8.1 x64 Edition Windows 8.1 x64 Edition
  8. Zithromax says: Google Chrome 83.0.4103.34 Google Chrome 83.0.4103.34 Windows 10 x64 Edition Windows 10 x64 Edition

    Funciona El Viagra

  9. buy priligy generic fraud says: Google Chrome 83.0.4098.0 Google Chrome 83.0.4098.0 Windows 10 x64 Edition Windows 10 x64 Edition

    cialis questions

  10. extessy says: Google Chrome 83.0.4103.61 Google Chrome 83.0.4103.61 Windows 8.1 Windows 8.1
  11. Toilfut says: Opera beta 69.0.3686.7 Opera beta 69.0.3686.7 Windows 10 x64 Edition Windows 10 x64 Edition
  12. Durbafe says: Google Chrome 83.0.4103.61 Google Chrome 83.0.4103.61 Windows 7 x64 Edition Windows 7 x64 Edition

    http://buypriligyhop.com/ – priligy cost

  13. Absorma says: Google Chrome 83.0.4103.61 Google Chrome 83.0.4103.61 Windows 7 Windows 7

    http://buylasixshop.com/ – furosemide structure

  14. accopsy says: Microsoft Edge 83.0.478.37 Microsoft Edge 83.0.478.37 Windows 7 x64 Edition Windows 7 x64 Edition
  15. speshyMuh says: Google Chrome 83.0.4103.34 Google Chrome 83.0.4103.34 Windows 10 x64 Edition Windows 10 x64 Edition

    http://buyplaquenilcv.com/ – half life of plaquenil

  16. Lasix says: Google Chrome 83.0.4103.61 Google Chrome 83.0.4103.61 Windows 10 x64 Edition Windows 10 x64 Edition

    viagra prix france

  17. CharlesJoult says: Google Chrome 90.0.4430.86 Google Chrome 90.0.4430.86 Windows 10 x64 Edition Windows 10 x64 Edition

    “I haven’t seen you in these parts,” the barkeep said, sidling settled to where I sat. “Personage’s Bao.” He stated it exuberantly, as if say of his exploits were shared by means of settlers around multifarious a verve in Aeternum.

    He waved to a expressionless keg apart from us, and I returned his indication with a nod. He filled a field-glasses and slid it to me across the stained red wood of the bench in the vanguard continuing.

    “As a betting man, I’d be ready to wager a above-board speck of coin you’re in Ebonscale Reach for more than the wet one’s whistle and sights,” he said, eyes glancing from the sword sheathed on my in to the capitulate slung across my back.

    https://www.google.com.uy/url?sa=t&rct=j&q=gana+dinero+escribiendo&esrc=s&source=web&cd=1&cad=rja&ved=0ahUKEwjb8pzitqfPAhUM6yYKHRETAF0QFggcMAA&url=https://renewworld.ru/data-vyhoda-new-world/

  18. where to buy cialis online says: Google Chrome 83.0.4100.3 Google Chrome 83.0.4100.3 Windows 10 x64 Edition Windows 10 x64 Edition

    Cialis Preise

Leave a Reply

Your email address will not be published*