适用于 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 服务,请执行以下步骤:

  1. 选择“ 开始”,选择“ 运行”,键入 Cmd,然后选择“ 确定”。

  2. 在命令提示符处,键入 net stop http,然后按 Enter。

  3. 在命令提示符处,键入 net start http,然后按 Enter。

  4. 在命令提示符处,键入 net stop iisadmin /y,然后按 Enter。

    注意

    依赖于 IIS 管理服务的任何 IIS 服务也将停止。 请注意,停止 IIS 管理服务服务时停止的 IIS 服务。 在下一步中,将重启每个服务。

  5. 重启步骤 4 中停止的 IIS 服务。 为此,请在命令提示符处键入 net start servicename ,然后按 Enter。 在命令中, servicename 是要重启的服务的名称。 例如,若要重启万维网发布服务服务,请键入 net start World Wide Web Publishing Service,然后按 Enter。