mod_reqtimeout
描述: | 设置接收请求的超时和最小数据速率 |
状态: | 延期 |
模块标识符: | reqtimeout_module |
源文件: | mod_reqtimeout.c |
兼容性: | 可在 Apache HTTPD 2.2.15 及更高版本中使用 |
摘要
此模块提供了一种方便的方法来设置接收请求的超时和最低数据速率。如果发生超时或数据速率低,则服务器将关闭相应的连接。
这记录在LogLevelinfo
。
如果需要,可以调整LogLevel指令以显式 log 它:
LogLevel reqtimeout:info
例子
- 允许 5 秒钟完成 TLS 握手,10 秒钟接收请求 headers,30 秒接收请求正文:
RequestReadTimeout handshake=5 header=10 body=30
- 至少需要 10 秒钟才能收到请求正文。如果 client 发送数据,则每接收 1000 个字节时超时增加 1 秒,超时没有上限(除了LimitRequestBody间接给出的限制):
RequestReadTimeout body=10,MinRate=1000
- 至少等待 10 秒钟才能收到请求 headers。如果 client 发送数据,则每接收 500 字节将超时时间增加 1 秒。但请求 headers 不要超过 30 秒:
RequestReadTimeout header=10-30,MinRate=500
- 通常,服务器应配置标头和正文超时。如果 common configuration 用于 http 和 https 虚拟主机,则超时不应设置得太低:
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
RequestReadTimeout 指令
描述: | 设置完成 TLS 握手的超时值,从 client 接收请求 headers and/or body。 |
句法: | 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 |
Context: | server config,virtual host |
状态: | 延期 |
模块: | mod_reqtimeout |
兼容性: | 可在 version 2.2.15 及更高版本中使用;在 version 2.3.14 及更早版本中默认为禁用。阶段自 version 2.4.39 起可用。 |
该指令可以设置各种超时来完成 TLS 握手,从 client 接收请求 headers and/or 请求体。如果 client 无法在配置的 time 中完成每个阶段,则会发送408 REQUEST TIME OUT
错误。
对于 SSL 虚拟主机,handshake
超时值是执行初始 SSL 握手所需的 time。如果用户的浏览器配置为查询证书吊销 lists 并且无法访问 CRL 服务器,则初始 SSL 握手可能需要很长的 time,直到浏览器放弃等待 CRL。因此,handshake
超时应考虑 SSL 虚拟主机(如果需要)的可能开销。正文超时值包括 SSL 重新协商所需的 time(如有必要)。
当AcceptFilter正在使用时(通常是 Linux 和 FreeBSD 上的情况),在收到至少一个字节(或整个httpready
请求)之前,socket 不会发送到服务器 process。使用RequestReadTimeout
配置的握手和标头超时仅在 server process 收到 socket 后生效。
对于三个超时阶段(握手,标题或正文)中的每一个,有三种方法可以指定超时:
- 修正了超时值:
stage=timeout
time(秒)允许完成整个阶段(握手,阅读所有请求 headers 或 body)。值为 0 表示没有限制。
- 为 vhost 禁用模块:
handshake=0 header=0 body=0
这会完全禁用mod_reqtimeout(请注意,handshake=0
已经是默认值,可以省略)。
- 收到数据时增加的超时值**:
stage=timeout,MinRate=data_rate
与上面相同,但每当收到数据时,超时值将根据指定的最小数据速率(以每秒字节数为单位)增加。
- 收到数据时增加的超时值,上限:
stage=timeout-maxtimeout,MinRate=data_rate
与上面相同,但超时不会超过指定超时范围的第二个 value。