鱿鱼reply_body_max_size不工作

我一直负责限制带宽消耗。 我已经设置鱿鱼作为一个透明的代理,并阻止各种内容types,如video,X – FLV …内容typesACL似乎工作正常。 我还设置了reply_body_max_size为10 MB,但大文件下载仍在进行中。 昨天晚上这一个通过了。

1331243510.997 621794 192.168.0.100 TCP_MISS/200 37603388 GET http://cache.pack.google.com/edgedl/chrome/mac/GoogleChrome-17.0.963.78.dmg - DIRECT/173.194.12.207 application/x-apple-diskimage 

这里是我的指令:(鱿鱼改变后重新启动)

 reply_body_max_size 10 MB 

从阅读鱿鱼文档http://www.squid-cache.org/Doc/config/reply_body_max_size/看起来像其他下游鱿鱼代理服务器可能会有一些问题。 我知道他们使用的ISP(Tachyon Systems)有一个内置了他们调制解调器的squid代理服务器。

难道这就是为什么reply_body_max_size在我的环境中不起作用?

正如Squid文档所述,reply_body_max_sizeconfiguration指令会导致squid在HTTP回复主体超出指定的大小时停止传输。 这由squid通过两种方式检查:使用HTTP Content-Length:头,如果存在的话 – 在这种情况下,答复将不被允许,TCP_DENIED_REPLY将被写入日志。 或者,如果HTTP Content-Length:头部不存在,则答复将被允许,但是当达到reply_body_max_size时连接将被closures。

在第二种情况下,可能会对您下游的任何caching产生潜在的重大连锁效应。 如果HTTP传输在没有HTTP Content-length:头的情况下启动,并且当达到回复大小限制时,您的squid副本随后丢弃连接,则在完整回复主体之前,下游caching不会知道连接已经丢失发送。 这可能会导致存储在下游caching中的对象的不完整副本。 但是,根据您的描述,我不认为这是这种情况,因为您正在谈论您的ISP运营的上游代理服务器。

在这个说明中,我无法看到上游代理可能会影响您对回复主体大小施加限制的能力。

关于你的configuration语法的一个注释。 你已经指定:

 reply_body_max_size 10 MB 

当我认为这应该是:

 reply_body_max_size 10 MB all 

在最后注意ACL名称“all”。 Squid文档将ACL列表放在方括号中,这往往表明这个参数是可选的,在我的testing中,我确实发现是这样的。 然而,在networking上的一些地方(以及上面的这个线程),这个语法有一些变化,有时在configuration行中也放置了“allow”或“deny”这个词。 根据Squid文档和我的testing,这是不正确的。 上面的语法已经正确testing了我。

铌。 用Squid 3.1.23和Squid 3.5.0.2进行testing。

你应该尝试应用到你的源代码。 例如:像这样的东西

acl localnet src 192.168.0.0/16
reply_body_max_size 52428800 deny localnet
http_access allow localnet