Windows のレジストリ設定をHttp.sysする
この記事では、Windows Http.sysレジストリ設定について説明します。
元の製品バージョン: Windows 8、Windows Server 2012、2008 R2、2008
元の KB 番号: 820129
まとめ
Windows Server 2008 以降のバージョンでは、Http.sysはハイパーテキスト転送プロトコル (HTTP) 要求を処理するカーネル モード ドライバーです。 特定の要件に従って、いくつかのレジストリ値を構成できます。 Registry keys セクションの表には、これらのレジストリ値に関する次の情報が含まれています。
- レジストリ キー名
- 既定の値
- 有効な値の範囲
- レジストリ キー関数
- 警告コード (該当する場合)
Note
既定の設定以外の設定を使用してレジストリ値を作成および構成する場合の潜在的なリスクについては、「 Warning codes 」セクションを参照してください。
この記事は上級ユーザーを対象としており、レジストリとレジストリが変更されたときに関連するリスクに関する知識を前提としています。
レジストリ キー
重要
このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 したがって、次の手順を注意深く実行してください。 保護のために、レジストリを変更する前に、バックアップします。 その後、問題が起こった場合は、レジストリを復元できます。 レジストリのバックアップと復元方法の詳細は、「Windows のレジストリのバックアップおよび復元の方法」を参照してください。
次のレジストリ キーの下に、次の DWORD レジストリ値を作成できます。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
レジストリ キー | 規定値 | 有効な値の範囲 | レジストリ キー関数 | 警告コード |
---|---|---|---|---|
AllowRestrictedChars | 0 | Boolean | 0 以外の場合、Http.sysは、U+0000 - U+001F および U+007F - U+009F の範囲にデコードする要求 URL で 16 進エスケープ文字を受け入れます。 | 0 |
EnableAggressiveMemoryUsage | 0 | 0 1 |
非ページ プール メモリを事前割り当てします。 既定では、20 メガバイト (MB) 未満の非ページ プール メモリが使用可能な場合、HTTP サービスは接続の受け入れを停止します。 この値をレジストリに追加すると、8 MB 未満の非ページ プール メモリが使用可能になると、HTTP サービスは接続の受け入れを停止します。 このレジストリ値を設定すると、Httperr.log ファイル内のConnections_refusedエラーと 503 エラーの数が減る可能性があります。 | 0 |
EnableNonUTF8 | 1 | Boolean | 0 の場合、Http.sysは UTF-8 でエンコードされた URL のみを受け入れます。 0 以外の場合、Http.sysは要求で ANSI または DBCS でエンコードされた URL も受け入れます。 | 0 |
FavorUTF8 | 1 | Boolean | 0 以外の場合、Http.sysは常に最初に URL を UTF-8 としてデコードしようとします。その変換が失敗し、 EnableNonUTF8 が 0 以外の場合は、Http.sys ANSI または DBCS としてデコードを試みます。 0 (および EnableNonUTF8 が 0 以外) の場合、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 | 許可されている現在のエンドポイント オブジェクトの最大数。 既定値の 0 は、使用可能なメモリから最大値が計算されることを意味します。 | 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 | Boolean | 0 以外の場合、Http.sysは要求 URL で % uNNNN 表記を受け入れます。 | 0 |
UrlSegmentMaxCount | 255 | 0 ~ 16,383 セグメント | URL パス セグメントの最大数。 0 の場合、 ULONG の最大値で囲まれたカウント。 |
1 |
UriEnableCache | 1 | Boolean | 0 以外の場合、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 内のスラッシュの間の領域)。 0 の場合は、 ULONG の最大値で囲まれた長さになります。 |
1 |
DisableServerHeader | 0 | 0 - 2 | このキーは、クライアントに送信する応答に http 応答ヘッダー サーバーを追加することに関して、http.sysがどのように動作するかを制御します。 値 0 (既定値) は、アプリケーションがhttp.sysするために提供するヘッダー値を使用するか、 Microsoft-HTTPAPI/2.0 の既定値を応答ヘッダーに追加します。 値 1 は、http.sysによって生成された応答 (400、503、およびその他の状態コードで終わる応答) の Server ヘッダーを追加しません。 値 2 を指定すると、http.sysが Server ヘッダーを応答に追加できなくなります。 応答にサーバー ヘッダーが存在する場合は削除されず、存在しない場合は追加されません。 |
0 |
インターネット サーバー API (ISAPI) アプリケーションまたは IIS でホストされている Common Gateway Interface (CGI) アプリケーションが応答を送信すると、インターネット インフォメーション サービス (IIS) のパフォーマンスが低下する可能性があります。 この問題が発生した場合は、 MaxBufferedSendBytes
DWORD 値をレジストリに追加できます。
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 サービスを入力します。
Start を選択し、Run を選択し、「Cmd」と入力して、OK を選択します。
コマンド プロンプトに
net stop http
と入力し、Enter キーを押します。コマンド プロンプトに
net start http
と入力し、Enter キーを押します。コマンド プロンプトに
net stop iisadmin /y
と入力し、Enter キーを押します。Note
IIS 管理サービスに依存するすべての IIS サービスも停止されます。 IIS 管理サービスを停止すると、IIS サービスが停止していることに注意してください。 次の手順で各サービスを再起動します。
手順 4 で停止した IIS サービスを再起動します。 これを行うには、コマンド プロンプトで「
net start servicename
」と入力し、Enter キーを押します。 コマンドの servicename は、再起動するサービスの名前です。 たとえば、World Wide Web Publishing Service サービスを再起動するには、「net start World Wide Web Publishing Service
」と入力し、Enter キーを押します。