解决一例wordpress的首页内容编码错误导致网站无法打开的故障—nginx下gzip与wp-super-cache插件冲突

Posted by

这两天文武双全的个人网站,出现了一个极其傻逼的情况。文武双全自己在家里用360可以访问个人网站,但是全国各地的很多网友跟我反映打不开我的个人网站。这个傻逼的问题,足足搞了两天才被我解决了。百度里搜索到的解决方法几乎没用,最后还是靠自己想到了解决问题的方法。下面说说整件事情的来弄去脉,给出现同类故障的兄弟们提个醒把。

极其搞笑的wordpress故障

我用360安全浏览器可以正常访问网站首页,而且可以登陆后台,我甚至还撰写了一篇文章。但是打开百度统计,最近两天的访问接近于0。搜索引擎的排名是好的,这说明外部流量正常。只是他们都打不开网站,导致百度统计没有统计到数据。更加搞笑的是,百度站长平台的抓取工具竟然能够正常抓取。。。

解决问题的关键点是我发现,用ie10.0、firefox、谷歌等非360安全浏览器,全都打不开。这让我彻底排除了,是站外因素导致的故障,把焦点集中到了站内。而站内我最近做的最大的改动,就是在持续攻击下,把服务器的web引擎从nginx+apache切换到单一的nginx。由于最近一段时间连续被攻击,我对于nginx的了解更加深厚了。我们公司的网管,用单一nginx跑php网站也给了我信心。我终于不再惧怕曾经让我为之疯狂的502报错,彻底转向nginx了。

故障原因是因为nginx下gzip与wp-super-cache插件冲突

百度找到的所有故障原因,都是错误的。我的php已经升级到最新的php5.6.5版本,nginx也升级到最新的1.7.9版本,不太可能是他们造成的。最大的可能,还是在wordpress以及wordpress插件本身。事实上,我后来的猜测是正确的。故障的原因实际上是这样的:

wp-super-cache插件,默认推荐的是apache下的mod_rewrite 缓存模式,这一模式会修改网站根目录下的.htaccess伪静态规则文件。所有已经缓存的页面,都是基于这个规则。mod_rewrite是基于apache的,文武双全切换到nginx后,就无法使用这一缓存模式了。只能选择第二种,php缓存模式。按照官方的说法,php缓存模式与mod_rewrite缓存模式速度上差不多。切换到php缓存模式后,在测试缓存时竟然报错了。两个首页的缓存文件,时间戳不一致,而这才是首页编码错误的真正症结。清空掉根目录下的.htaccess文件,只留开始和结尾语句。

在查看wp-super-cache的高级选项时候,我突然看到“压缩默认已禁用,因为有些主机对压缩过的文件处理有问题。勾选或取消勾选该功能会清除缓存。” 这样一段话。我突然领悟到,可能是Gzip与wp-super-cache有冲突导致的。Gzip和wp-super-cache都会对页面进行压缩,可能是两者的压缩方式产生冲突互不兼容,就好比家里电脑安装了两个杀毒软件一样。

在取消掉“压缩页面以便让来访者更快浏览”的选项后,在测试缓存,神奇的一幕竟然出现了。妈个蛋,缓存测试成功了。好吧,困扰我两天的网站打不开的问题,终于给解决了。

只有firefox能够正确报错

firefox还是开发者的神器啊,在遇到问题后只有firefox能够第一时间给我报错。360安全浏览器竟然可以在编码错误的情况下正常访问网站并登陆后台,ie只能显示打不开网站,谷歌也是这样,百度同样垃圾。唯独firefox,正确报错是编码错误导致的网页无法打开。在进行wp-super-cache缓存测试时候,生成的首页静态文件1.html和2.html确实是乱码的,乱码的具体原因至今未明。

这两天我尝试了各种方法

因为百度不到方法,我瞎猫撞死耗子一样用了各种方法。

1,nginx配置文件各种修改,调试;

2,站点配置文件也是各种修改,调试;

3,iptables防火墙规则全部清空了,都没用,哥他妈手动加了600条规则啊;

4,防DDOS和CC攻击的Mod全部取消掉了;

5,连解析都恢复到阿里云的云盾WAF了;

哎,真是苦逼啊。当你遇到问题的时候,找不到解决问题的方法,真他妈蛋疼。一切还是得靠自己啊,百度现在越来越不靠谱了。

wordpress网站的内容编码错误报错
wordpress网站的内容编码错误报错

以上是故障截图,感谢firefox。最后,文武双全只能无奈的说:wordpress不仅自己坑多,插件的坑更多啊。

13 comments

  1. 太感谢你了,简直神了,我用Google浏览器查半天了,还以为是dns被劫持了,什么报错都没有

  2. 我的apache一样出现了该错误,主机应该是没问题可是“超级缓存”不知道怎么修改,如果不用压缩功能等于折翼。。。换个什么插件好呢?

  3. 这个插件,其实很好,但设置那边太多坑,因此也不适合给新手用!

  4. apache买PHP动态还是很好的呀?怎么了?占内存?

  5. 目前个人网站正是跑在nginx上,apache已经被我彻底抛弃了,不会再用了。

  6. 那个网站留言guestbook,是wordpress自带的么?还是通过哪个插件实现的呢?感觉还是很赞的

  7. nginx下gzip与wp-super-cache插件冲突 :shock:
    wp-super-cache的加速缓存是系统自带的插件么?
    还有nginx单跑wordpress能跑的动么,还是lnamp更好一点吧?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.