Http.sys Windows 的注册表设置

本文介绍 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

注册表项 默认值 有效值范围 注册表项函数 警告代码
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 的大约 32,000 个字符。 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 不会追加由以 400、503 结尾的 http.sys (响应生成的响应以及) 的其他状态代码的服务器标头。 值 2 将阻止 http.sys 将 Server 标头追加到响应中。 如果响应中存在服务器标头,则不会删除它;如果不存在,则不会添加它。 0

当 Internet Server API (ISAPI) 应用程序或公共网关接口 (CGI) IIS 上托管的应用程序发送响应时,Internet Information Services (IIS) 性能可能会降低。 如果遇到此问题,可以将 DWORD 值添加到 MaxBufferedSendBytes 注册表。

在 Windows Server 2008 及更高版本中,还可以在以下注册表项下创建以下 DWORD 值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTPFilter\Parameters

注册表项 默认值 有效值范围 注册表项函数 警告代码
CertChainCacheOnlyUrlRetrieval 1 0
1
默认情况下,当 IIS 配置为使用客户端证书时,链验证期间不会遵循 AIA 提示。 此行为出于性能和安全原因。 例如,此行为可以帮助防止 DoS 攻击。 但是,当需要 AIA 检索时,此行为也可能导致意外的证书拒绝。 若要重写此行为,可以在注册表项下HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTPFilter\Parameters将 DWORD 参数CertChainCacheOnlyUrlRetrieval设置为 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。