ADC

HTTP構成

重要:

NetScalerリリース13.0ビルド71.x以降、NetScalerアプライアンスはL7アプリケーションリクエストに対応するために大きなヘッダーサイズのHTTPリクエストを処理できるようになりました。ヘッダーサイズは最大 120 KB まで設定できます。

NetScaler ADCアプライアンスのHTTP構成は、HTTP設定の集合であるHTTPプロファイルと呼ばれるエンティティで指定できます。HTTP プロファイルは、これらの HTTP 設定を使用するサービスまたは仮想サーバに関連付けることができます。

デフォルトの HTTP プロファイルは、デフォルトですべてのサービスと仮想サーバーにグローバルに適用される HTTP 構成を設定するように構成できます。

注:

HTTP パラメータにサービス、仮想サーバー、およびグローバルに異なる値がある場合、最も固有のエンティティ(サービス)の値が最も高い優先順位が与えられます。

NetScalerアプライアンスには、HTTPを構成するための他の方法も用意されています。詳細については読んでください。

NetScalerはWebSocketプロトコルをサポートしているため、ブラウザやその他のクライアントはサーバーへの双方向の全二重TCP接続を作成できます。 WebSocketのNetScaler 実装はRFC 6455に準拠しています。

注:

NetScalerアプライアンスは、HTTP/1.1プロトコルとHTTP/2プロトコルの両方でユーザーソースIP(USIP)アドレス構成をサポートしています。

グローバル HTTP パラメータの設定

NetScalerアプライアンスでは、すべてのNetScalerサービスと仮想サーバーに適用されるHTTPパラメーターの値を指定できます。これは、以下を使用して実行できます。

  • デフォルトの HTTP プロファイル
  • グローバル HTTP コマンド

デフォルトの HTTP プロファイル

nshttp_default_profile という名前の HTTP プロファイルを使用して、サービスレベルまたは仮想サーバーレベルで HTTP 構成が提供されていない場合に使用される HTTP 構成を指定します。

メモ:

  • すべての HTTP パラメータをデフォルトの HTTP プロファイルで設定できるわけではありません。一部の設定は、グローバル HTTP コマンドを使用して実行します (次のセクションを参照)。

  • デフォルトプロファイルは、サービスまたは仮想サーバーに明示的にバインドする必要はありません。

デフォルトの HTTP プロファイルを設定するには

  • コマンド・ライン・インタフェースを使用して、コマンド・プロンプトに次のように入力します。

    set ns httpProfile nshttp_default_profile …

  • GUI で、[ システム ] > [ プロファイル] に移動し、[ HTTP プロファイル ] をクリックし、nshttp_default_profile を更新します。

グローバル HTTP コマンド

グローバル HTTP パラメータを設定するために使用できるもう 1 つの方法は、global HTTP コマンドです。このコマンドは一意のパラメータに加えて、HTTP プロファイルを使用して設定できるいくつかのパラメータを複製します。これらの重複パラメータに対して行われた更新は、デフォルトの HTTP プロファイルの対応するパラメータに反映されます。

たとえば、このアプローチを使用して maxReusePool パラメータを更新すると、値はデフォルトの HTTP プロファイル (nshttp_default_profile) の maxReusePool パラメータに反映されます。

注:

この方法は、デフォルトの HTTP プロファイルにはない HTTP パラメータにのみ使用することをお勧めします。

グローバル HTTP コマンドを設定するには

  • コマンド・ライン・インタフェースを使用して、コマンド・プロンプトに次のように入力します。

    set ns httpParam …

  • GUI で、[ システム] > [設定] に移動し、[ HTTP パラメータの変更 ] をクリックし、必要な HTTP パラメータを更新します。

接続要求に対して無視コーディングスキームを設定するには

HTTP/2 を有効にし、接続リクエストのコーディングスキームを無視するように HTTP/2 パラメータを設定するには、コマンドプロンプトで次のように入力します。

set ns httpParam [-ignoreConnectCodingScheme ( ENABLED | DISABLED )]

例:

set ns httpParam -ignoreConnectCodingScheme ENABLED

NetScaler ADCコマンドラインを使用してHTTPプロファイルを仮想サーバーにバインドするには

HTTP プロファイルを設定して TRACE または TRACK 無効な要求をドロップする

marktraceReqInval パラメーターを有効にして、TRACK リクエストと TRACK リクエストを無効としてマークできます。このオプションを仮想IPアドレスでDropInvalidReqsオプションとともに有効にすると、NetScalerアプライアンスにTRACEまたはTRACKリクエストを送信するクライアントをリセットできます。

CLI を使用して HTTP プロファイルを設定するには

コマンドプロンプトで入力します:

set ns httpProfile <profile name> [-markTraceReqInval ENABLED | DISABLED ]

例:

set ns httpProfile profile1 -markTraceReqInval ENABLED

サービスグループの HTTP プロファイルの設定

コマンドプロンプトで入力します:

add serviceGroup <serviceGroupName>@ <serviceType> [-cacheType <cacheType>] [-td <positive_integer>] [-maxClient <positive_integer>] [-maxReq <positive_integer>] [-cacheable ( YES | NO )] [-cip ( ENABLED | DISABLED ) [<cipHeader>]] [-usip ( YES | NO )] [-pathMonitor ( YES | NO )] [-pathMonitorIndv ( YES | NO )] [-useproxyport ( YES | NO )] [-healthMonitor ( YES | NO )] [-sp ( ON | OFF )] [-rtspSessionidRemap ( ON | OFF )] [-cltTimeout <secs>] [-svrTimeout <secs>] [-CKA ( YES | NO )] [-TCPB ( YES | NO )] [-CMP ( YES | NO )] [-maxBandwidth
<positive_integer>] [-monThreshold <positive_integer>] [-state ENABLED DISABLED )][-downStateFlush ( ENABLED | DISABLED )] [-tcpProfileName <string>] [-httpProfileName <string>] [-comment <string>] [-appflowLog ( ENABLED | DISABLED )] [-netProfile <string>] [-autoScale <autoScale> -memberPort <port> [-autoDisablegraceful ( YES | NO )] [-autoDisabledelay <secs>] ] [-monConnectionClose ( RESET | FIN )]

<!--NeedCopy-->

例:

add serviceGroup Service-Group-1 HTTP -maxClient 0 -maxReq 0 -cip ENABLED -usip NO -useproxyport YES -cltTimeout 200 -svrTimeout 300 -CKA NO -TCPB NO -CMP NO -httpProfileName profile1

NetScaler GUIを使用してHTTPプロファイルを構成する

TRACE または TRACK の無効なリクエストをマークするには、次の手順を実行します。

  1. NetScaler ADCアプライアンスにサインインし、[ 構成 ]>[ システム ]>[ プロファイル]に移動します。
  2. [ HTTP プロファイル ] タブページで、[ 追加] をクリックします。
  3. [ HTTP プロファイルの作成 ] ページで、[ トレース要求を無効としてマーク ] オプションを選択します。
  4. [Create] をクリックします。

サービスまたは仮想サーバー固有の HTTP パラメータの設定

HTTP プロファイルを使用して、サービスおよび仮想サーバの HTTP パラメータを指定できます。HTTP プロファイルを定義し(または組み込みの HTTP プロファイルを使用して)、プロファイルを適切なサービスおよび仮想サーバに関連付ける必要があります。

注:

要件に従って、デフォルトプロファイルの HTTP パラメータを変更することもできます。

コマンドラインインターフェイスを使用してサービスレベルまたは仮想サーバーレベルの HTTP 構成を指定するには

コマンドプロンプトで、次の操作を実行します。

  1. HTTP プロファイルを設定します。

    set ns httpProfile <profile-name>...

  2. HTTP プロファイルをサービスまたは仮想サーバーにバインドします。

    HTTP プロファイルをサービスにバインドするには、次の手順を実行します。

set service <name> .....

> set service service1 -httpProfileName profile1
<!--NeedCopy-->

HTTP プロファイルを仮想サーバーにバインドするには、次の手順を実行します。

set lb vserver <name> .....

例:

> set lb vserver lbvserver1 -httpProfileName profile1
<!--NeedCopy-->

GUI を使用してサービスレベルまたは仮想サーバレベルの HTTP 構成を指定するには

GUI で、次の手順を実行します。

  1. HTTP プロファイルを設定します。

    [ システム ] > [ プロファイル ] > [ HTTP プロファイル] に移動し、HTTP プロファイルを作成します。

  2. HTTP プロファイルをサービスまたは仮想サーバーにバインドします。

    [ トラフィック管理 ] > [ 負荷分散 ] > [ サービス/仮想サーバー] に移動し、サービス/仮想サーバーにバインドする必要がある HTTP プロファイルを作成します。

組み込みの HTTP プロファイル

NetScalerには、構成の便宜上、いくつかの組み込みHTTPプロファイルが用意されています。リストされているプロファイルを確認し、そのまま使用するか、要件に合わせて変更します。これらのプロファイルは、必要なサービスまたは仮想サーバーにバインドできます。

組み込みのプロファイル 説明
nshttp_default_profile アプライアンスのデフォルトのグローバル HTTP 設定を表します。
nshttp_default_strict_validation HTTP リクエストとレスポンスの厳密な検証が必要なデプロイ用の設定。

HTTP 設定の例

次の設定に使用するコマンドラインインターフェイスのサンプル例。

  • HTTP バンド統計情報
  • WebSocket 接続

HTTP バンド統計情報

HTTP リクエストとレスポンスのバンドサイズを指定します。

> set protocol httpBand reqBandSize 300 respBandSize 2048
Done
> show protocol httpband -type REQUEST
<!--NeedCopy-->

WebSocket 接続

必要な HTTP プロファイルで WebSocket を有効にします。

> set ns httpProfile http_profile1 -webSocket ENABLED
Done
> set lb vserver lbvserver1 -httpProfileName profile1
Done
<!--NeedCopy-->

アップグレードヘッダーを削除するか、バックエンドサーバーに渡すようにNetScalerアプライアンスを構成します

HTTP プロファイルの PassProtocol Upgrade パラメーターは、バックエンドサーバーへの攻撃を防ぎます。このパラメータの状態に応じて、アップグレードヘッダーはバックエンドサーバーに送信されるリクエストで渡されるか、リクエストを送信する前に削除されます。

  • PassProtocol Upgrade パラメーターが有効になっている場合は、アップグレードヘッダーがバックエンドサーバーに渡されます。サーバーはアップグレード要求を受け入れ、応答で通知します。
  • パラメータが無効になっている場合、アップグレードヘッダーは削除され、残りのリクエストはバックエンドサーバーに送信されます。

PassProtocolUpgrade パラメータが次のプロファイルに追加されます。

  • nshttp_default_profile-デフォルトで有効になっています
  • nshttp_default_strict_validation-デフォルトでは無効になっています
  • nshttp_default_internal_apps-デフォルトでは無効になっています
  • nshttp_default_http_quic_profile-デフォルトで有効になっています

PassProtocol Upgrade パラメーターをデフォルトで無効に設定することをお勧めします。

CLI を使用して PassProtocol アップグレードパラメータを設定します

コマンドプロンプトで、次のように入力します:

set ns httpProfile <name> [-passProtocolUpgrade ( ENABLED | DISABLED )]

例:

set ns httpProfile profile1 -passProtocolUpgrade ENABLED

GUI を使用して PassProtocol アップグレードパラメータを設定します

  1. [ システム] > [プロファイル] > [HTTP プロファイル] に移動します。
  2. HTTP プロファイルを作成または編集します。
  3. プロトコルアップグレードをパスする」を選択します。

ホストヘッダーを検証するように HTTP プロファイルを設定する

NetScalerリリース14.1-21.x以降、NetScalerは受信HTTPリクエストのホストヘッダーの検証をサポートして、ホストヘッダーの注入や攻撃を防ぎます。

ホストヘッダーの検証を有効にすると、次のチェックが実行されます:

  • ホストヘッダーのIPアドレスまたはDNS名部分であるホストヘッダーの長さは、255文字以下です。
  • 最大ポート番号は 65535 なので、指定した場合、ポート番号は 5 文字以下です。

ホストヘッダーが定義された条件に従わない場合、そのような HTTP リクエストはドロップされます。

デフォルトでは、ホストヘッダーの検証はデフォルトプロファイルでは無効になっており、セキュアまたは厳密な HTTP プロファイルでは有効になっています。

NetScaler CLIを使用してHTTPホストヘッダーを検証する

コマンドプロンプトで、次のように入力します:

set ns httpprofile <name> -hostHeaderValidation (ENABLED | DISABLED)
<!--NeedCopy-->

例:

set ns httpProfile http_profile1 -hostHeaderValidation ENABLED
<!--NeedCopy-->

NetScaler GUIを使用してHTTPホストヘッダーを検証する

  1. [ システム] > [プロファイル] > [HTTP プロファイル] に移動します。
  2. HTTP プロファイルを作成または編集します。
  3. HTTP プロファイルの設定 」ページで、「 ホストヘッダー検証」を選択します。