我们在使用DreamHost主机的时候,偶尔会碰到 Service Temporarily Unavailable 的503错误。一直以为是网站程序本身存在的 Bug ,加上出现的频率很小,也就没去在意。但有次偶然的发现在发布文章的时候,要发布的内容里面包含某些必须加的URL,但一加上提交就出503错误,去掉那段URL就正常,实在是搞不明白。把提交时的所有多余代码都注释掉状况依旧。
最后到 DreamHost的 wiki 上一查才知道可能是它的mod_security在作怪。检查 error.log ,果然有一大堆的 mod_security: Access denied with code 503 错误。
这个在DreamHost domain设置里面缺省激活的选项看来设置了不少的过滤规则,包括referer URL , POST data, POST Content-Length 等各方面非法内容的检查。安全性固然有所提高,但正则匹配误杀的可能性也不小。像我们平时的小博客网站,还是不要这些过滤规则算了。到Manager Domains里面把DreamHost highly recommended的Extra Web Security的选项去掉,一切就恢复正常了。
希望这点小小的经历可以帮助到同样出现这种问题的朋友吧!