Apache HTTP Server 版本 2.4
描述 | 设置接收请求的超时时间和最小数据速率 |
---|---|
状态 | 扩展 |
模块标识符 | reqtimeout_module |
源文件 | mod_reqtimeout.c |
兼容性 | 在 Apache HTTPD 2.2.15 及更高版本中可用 |
此模块提供了一种便捷的方式来设置接收请求的超时时间和最小数据速率。如果发生超时或数据速率过低,服务器将关闭相应的连接。
这将在 LogLevel
info
级别记录。
如果需要,可以调整 LogLevel
指令以显式记录它。
LogLevel reqtimeout:info
RequestReadTimeout handshake=5 header=10 body=30
LimitRequestBody
间接给出的限制)。RequestReadTimeout body=10,MinRate=1000
RequestReadTimeout header=10-30,MinRate=500
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
描述 | 设置完成 TLS 握手、从客户端接收请求头和/或请求体的超时时间值。 |
---|---|
语法 | RequestReadTimeout [handshake=timeout[-maxtimeout][,MinRate=rate] [header=timeout[-maxtimeout][,MinRate=rate] [body=timeout[-maxtimeout][,MinRate=rate] |
默认值 | RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=20,MinRate=500 |
上下文 | 服务器配置,虚拟主机 |
状态 | 扩展 |
模块 | mod_reqtimeout |
兼容性 | 在版本 2.2.15 及更高版本中可用;在版本 2.3.14 及更早版本中默认禁用。handshake 阶段从版本 2.4.39 开始可用。 |
此指令可以设置完成 TLS 握手、从客户端接收请求头和/或请求体的各种超时时间。如果客户端在配置的时间内未能完成这些阶段中的任何一个,则会发送 408 REQUEST TIME OUT
错误。
对于 SSL 虚拟主机,handshake
超时时间值是执行初始 SSL 握手所需的时间。如果用户的浏览器配置为查询证书吊销列表,并且 CRL 服务器不可达,则初始 SSL 握手可能需要相当长的时间,直到浏览器放弃等待 CRL。因此,handshake
超时时间应考虑 SSL 虚拟主机(如果需要)的这种可能的开销。体超时时间值包括 SSL 重新协商(如果需要)所需的时间。
当使用 AcceptFilter
时(通常在 Linux 和 FreeBSD 上是这种情况),在至少接收一个字节(或 httpready
的整个请求)之前,套接字不会发送到服务器进程。使用 RequestReadTimeout
配置的握手和头超时时间仅在服务器进程接收套接字后才有效。
对于三个超时阶段(握手、头或体)中的每一个,有三种方法可以指定超时时间。
stage=timeout
完成整个阶段(握手、读取所有请求头或请求体)允许的时间(以秒为单位)。值为 0 表示没有限制。
handshake=0 header=0 body=0
这将完全禁用 mod_reqtimeout
(请注意,handshake=0
已经是默认值,可以省略)。
stage=timeout,MinRate=data_rate
与上面相同,但只要接收数据,超时时间值就会根据指定的最小数据速率(以每秒字节数为单位)增加。
stage=timeout-maxtimeout,MinRate=data_rate
与上面相同,但超时时间不会超过指定的超时时间范围的第二个值。