适用于 Windows 的Http.sys注册表设置
本文介绍适用于 Windows 的Http.sys注册表设置。
原始产品版本: Windows 8、Windows Server 2012、2008 R2、2008
原始 KB 数: 820129
总结
在 Windows Server 2008 及更高版本中,Http.sys是处理超文本传输协议 (HTTP) 请求的内核模式驱动程序。 可以根据特定要求配置多个注册表值。 注册表项部分中的表包含以下有关这些注册表值的信息:
- 注册表项名称
- 默认值
- 有效值范围
- 注册表项函数
- 警告代码(如果适用)
注意
请参阅“ 警告代码 ”部分,了解使用默认设置以外的设置创建和配置注册表值时的潜在风险。
本文适用于高级用户,并假定了解注册表以及更改注册表时所涉及的风险。
注册密钥
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表。
可以在以下注册表项下创建以下 DWORD 注册表值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
注册表项 | 默认值 | 有效值范围 | 注册表项函数 | WARNING 代码 |
---|---|---|---|---|
AllowRestrictedChars | 0 | 布尔 | 如果非零,Http.sys接受解码为 U+0000 - U+001F 和 U+007F - U+009F 范围的请求 URL 中的十六进制转义字符。 | 0 |
EnableAggressiveMemoryUsage | 0 | 0 1 |
预分配非分页池内存。 默认情况下,当可用的非分页池内存少于 20 MB(MB)时,HTTP 服务将停止接受连接。 将此值添加到注册表后,当可用的非分页池内存小于 8 MB 时,HTTP 服务将停止接受连接。 设置此注册表值可能会减少Httperr.log文件中的Connections_refused和 503 错误数。 | 0 |
EnableNonUTF8 | 1 | 布尔 | 如果为零,则Http.sys仅接受 UTF-8 编码的 URL。 如果为非零,Http.sys还接受请求中的 ANSI 或 DBCS 编码 URL。 | 0 |
FavorUTF8 | 1 | 布尔 | 如果为非零,Http.sys始终尝试先将 URL 解码为 UTF-8;如果该转换失败且 EnableNonUTF8 为非零,则Http.sys尝试将其解码为 ANSI 或 DBCS。 如果为零(且 EnableNonUTF8 为非零),Http.sys尝试将其解码为 ANSI 或 DBCS;如果未成功,则尝试 UTF-8 转换。 |
0 |
MaxBytesPerSend | 65536 | 1-0xFFFFF (字节) | 重写由Http.sys使用的 TCP 窗口大小。 较高的值可能会在带宽高、延迟高的网络环境中启用更高的下载速度。 | 0 |
MaxConnections | MAX_ULONG | 1024 (1k) - 2031616 (2 MB) 连接 | 替代 MaxConnections 驱动程序中的计算。 这主要是内存函数。 |
1 |
MaxEndpoints | 0 | 0 - 1024 | 允许的最大当前终结点对象数。 默认值为零表示从可用内存中计算最大值。 | 1 |
MaxFieldLength | 16384 | 64 - 65534 (64k - 2) 字节 | 为每个标头设置上限。 请参阅 MaxRequestBytes 。 对于 URL,此限制转换为大约 3.2 万个字符。 |
1 |
MaxRequestBytes | 16384 | 256 - 16777216 (16 MB) 字节 | 确定请求行和标头的总大小上限。 其默认设置为 16 KB。 如果此值低于 MaxFieldLength ,则 MaxFieldLength 调整该值。 |
1 |
PercentUAllowed | 1 | 布尔 | 如果为非零,Http.sys接受 请求 URL 中的 %uNNNN 表示法。 | 0 |
UrlSegmentMaxCount | 255 | 0 - 16,383 段 | URL 路径段的最大数目。 如果为零,则由最大值 ULONG 限定的计数。 |
1 |
UriEnableCache | 1 | 布尔 | 如果为非零,则启用Http.sys响应和片段缓存。 | 0 |
UriMaxUriBytes | 262144(字节) | 4096 (4k) - 16777216 (16 MB) 字节 | 大于此值的任何响应都不会缓存在内核响应缓存中。 | 1 3 |
UriScavengerPeriod | 120 (秒) | 10 - 0xFFFFFFFF秒 | 确定缓存寻道器的频率。 刷新未在等于 UriScavengerPeriod 秒数内访问的任何响应或片段。 |
1 2 |
UrlSegmentMaxLength | 260 | 0 - 32,766 个字符 | URL 路径段中的最大字符数(URL 中的斜杠之间的区域)。 如果为零,则为受最大值限制的 ULONG 长度。 |
1 |
DisableServerHeader | 0 | 0 - 2 | 此密钥控制http.sys如何针对发送到客户端的响应追加 http 响应标头服务器的行为。 值为 0(默认值)将使用应用程序提供给http.sys的标头值,或将默认值 Microsoft-HTTPAPI/2.0 追加到响应标头。 值 1 不会附加由http.sys生成的响应的服务器标头(以 400、503 和其他状态代码结尾的响应)。 值为 2 将阻止http.sys将服务器标头追加到响应。 如果响应中存在服务器标头,则不会删除它,如果不存在服务器标头,则不会添加该标头。 |
0 |
Internet 服务器 API (ISAPI) 应用程序或 IIS 上托管的通用网关接口 (CGI) 应用程序发送响应时,Internet Information Services (IIS)的性能可能会降低。 如果遇到此问题,可以将 DWORD 值添加到 MaxBufferedSendBytes
注册表。
在 Windows Server 2008 及更高版本中,还可以在以下注册表项下创建以下 DWORD 值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTPFilter\Parameters
注册表项 | 默认值 | 有效值范围 | 注册表项函数 | WARNING 代码 |
---|---|---|---|---|
CertChainCacheOnlyUrlRetrieval | 1 | 0 1 |
默认情况下,当 IIS 配置为使用客户端证书时,链验证期间不会遵循 AIA 提示。 此行为出于性能和安全原因。 例如,此行为可以帮助防止 DoS 攻击。 但是,当需要 AIA 检索时,此行为还可能导致意外的证书拒绝。 若要替代此行为,可以将 DWORD 参数 CertChainCacheOnlyUrlRetrieval 设置为注册表项下的 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTPFilter\Parameters 0(零)。 |
不适用 |
警告代码
- 0:没有风险。
- 1:更改此注册表项被视为危险。 此密钥导致Http.sys使用更多内存,并可能会增加恶意攻击的漏洞。
- 2:低值可能会导致缓存更频繁地刷新。 如果发生此行为,则可能会影响性能。
- 3:低值可能会影响静态内容的性能。
在重启 HTTP 服务之前,对注册表所做的更改不会生效。 此外,可能需要重启任何相关的 IIS 服务。
若要重启 HTTP 服务、键入和所有相关 IIS 服务,请执行以下步骤:
选择“ 开始”,选择“ 运行”,键入 Cmd,然后选择“ 确定”。
在命令提示符处,键入
net stop http
,然后按 Enter。在命令提示符处,键入
net start http
,然后按 Enter。在命令提示符处,键入
net stop iisadmin /y
,然后按 Enter。注意
依赖于 IIS 管理服务的任何 IIS 服务也将停止。 请注意,停止 IIS 管理服务服务时停止的 IIS 服务。 在下一步中,将重启每个服务。
重启步骤 4 中停止的 IIS 服务。 为此,请在命令提示符处键入
net start servicename
,然后按 Enter。 在命令中, servicename 是要重启的服务的名称。 例如,若要重启万维网发布服务服务,请键入net start World Wide Web Publishing Service
,然后按 Enter。