如何配置每个请求的Squid连接|read|write超时,而不是全局



设置

假设我有两个不同的HTTP客户端使用相同的Squid实例。

第一个客户端名为ClientA,具有攻击性的Http读/写和5秒的连接超时。另一个名为ClientB的客户端具有120秒的非常宽松的超时。

我的Squid服务器配置如下:

connect_timeout 1 minute
read_timeout 1 minute
write_timeout 1 minute

场景1

ClientA(通过Squid(向ServerX发送一个请求,在接受连接之前等待45秒,然后立即回复。

问题1

ClientA将在5秒后超时,但Squid是否会注意到并关闭出站连接,或者等待ServerX响应(在40秒内(,但无法将结果写回不再侦听的ClientA?

场景2

ClientB(通过Squid(向ServerY发送一个请求,ServerY在接受连接之前将等待61秒,然后立即回复。

问题2

ClientB不会超时,但Squid应该在60秒后超时,并向ClientB发送Http timeout 408,对吗?

全局问题

有没有办法设置Squid,这样我们就可以通过请求而不是在服务级别全局设置超时?

重要提示:squid关于超时的行为可能会根据使用的协议而变化。在HTTPS的情况下,它无法检查隧道连接的HTTP标头,因此无法接受任何ConnectionProxy-ConnectionKeep-Alive: timeout=xx值。

场景1

Squid会在注意到客户端离开后立即关闭出站连接。

场景2

Squid确实会超时,但结果将取决于使用的协议。在HTTP的情况下,它将返回"504 Gateway Time-out"并添加一个额外的标头"X-Squid-Error: ERR_READ_TIMEOUT 0"。

在HTTPS的情况下,它只会关闭连接,因为它无法读取或注入对客户端有意义的标头。

全局问题

而不是鱿鱼形态本身。如果您希望对持久连接的超时进行细粒度控制,那么您应该在客户端中这样做。

为了记录在案,以下是squid将尝试为持久连接遵守的超时设置:

客户端<->鱿鱼:client_persistent_connections,persistent_request_timeout

鱿鱼<->服务器:server_persistent_connections、pconn_timeout、read_timeout(用于HTTPS(

最新更新