最近新装了一台DELL R710作为网关服务器,跑CentOS 5.2,双ADSL+光纤3线上网,iptables+squid作透明代理,用起来很爽,但就是某些网站总是会显示Content Encoding Error(用的是FireFox,如果用IE则显示“不支持的编码方式”),百思不得其解。
上网搜了很久,终于搜到几篇相关的文章讲这个事情,参见:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=501192
http://squidproxy.wordpress.com/2008/04/29/chunked-decoding/
问题的实质按该文章的说法其实是网站HTTP服务器的错,而不是squid的问题。因为squid目前只支持http 1.0,并且在和网站HTTP服务器握手时也会声明这一点,但某些服务器就是不理会而硬性向squid发送只有在http 1.1中定义的http 头:chunked。因此squid 无法处理而只能给出出错信息给浏览器。
解决办法只是临时的,据开发者称,squid 3.1将会支持http 1.1,届时此问题将不复存在,但目前,只能通过如下方法去避免这个问题:
修改squid.conf,添加:
acl broken dstdomain 这里给出出问题的网站的名称,比如:.it168.com
header_access Accept-Encoding deny broken
保存后重新载入配置文件:
service squid reload
这个临时解决方案的最大问题是要维护这个网站列表。目前我发现用nginx做http 服务器的发生这个问题的几率比较高。
本站微信订阅号:
本页网址二维码: