このトピックでは、Classic Load Balancer (CLB) のレイヤー7リスナーに関するよくある質問に対する回答を提供します。
リクエストがレイヤー7リスナーによって転送された後、バックエンドサーバーから返されたレスポンスヘッダーから一部のパラメーターが削除されるのはなぜですか?
課題: CLBは、レスポンスヘッダーのDate、Server、X-Pad、およびX-Accel-Redirectパラメーターの値を変更して、セッションの永続性を実装します。
解決策:
xl-server や xl-date などのカスタムヘッダーにプレフィックスを追加します。
レイヤー7 HTTPリスナーをレイヤー4 TCPリスナーに変更します。
追加のヘッダーTransfer-Encoding: chunkedがHTTPリクエストに追加されるのはなぜですか?
問題:
ドメイン名がレイヤー7 CLBインスタンスのサービスアドレスに解決された後、オンプレミスホストからドメイン名にアクセスすると、Transfer-Encoding: chunkedフィールドがHTTPリクエストヘッダーに追加されます。 ただし、このフィールドは、オンプレミスホストから直接バックエンドサーバーにアクセスする場合、リクエストには表示されません。
原因:
レイヤー7 CLBインスタンスは、Tengineリバースプロキシに基づいて負荷分散を実装します。 Transfer-Encodingフィールドは、webサーバーが応答メッセージ本文をどのようにエンコードするかを示します。 たとえば、Transfer-Encoding: chunkedは、chunked transfer encodingが使用されることを示します。
レイヤー4リスナーはトラフィックのみを配信するため、このヘッダーはレイヤー4リスナーによって転送されたリクエストには追加されません。
HTTPSリスナーでWebサイトを開くと、スタイルシートが読み込まれないのはなぜですか。
問題:
HTTPリスナーとHTTPSリスナーが作成され、同じバックエンドサーバーを使用します。 指定されたポート番号のHTTPリスナーを介してWebサイトにアクセスすると、Webサイトが表示されます。 ただし、HTTPSリスナーを介してWebサイトにアクセスすると、Webサイトのレイアウトが歪んでしまいます。
原因:
デフォルトでは、CLBはJavaScriptファイルの読み込みと転送をブロックしません。 この問題は、次の理由によって引き起こされる可能性があります。
証明書は Web ブラウザのセキュリティレベルと互換性がありません。
証明書は無資格のサードパーティ証明書です。 この場合、証明書発行者に連絡して、証明書の資格を確認してください。
解決策:
Webサイトを開いたら、ブラウザの指示に従ってスクリプトを読み込みます。
必要な証明書をブラウザに追加してください。
HTTPSリスナーはどのポートを使用しますか。
HTTPSリスナーには、ポートに対する特別な要件はありません。 ただし、HTTPSリスナーのポート443を指定することを推奨します。
CLBはどのような種類の証明書をサポートしますか?
CLBは、PEM形式のサーバー証明書とCA証明書をサポートします。
サーバー証明書の場合は、証明書の内容と秘密鍵の両方をアップロードする必要があります。 CA証明書の場合は、証明書のコンテンツのみをアップロードする必要があります。
CLBはkeytoolが作成した証明書をサポートしていますか?
はい、CLBはkeytoolで作成された証明書をサポートします。
証明書をCLBにアップロードする前に、証明書形式をPEMに変換する必要があります。 詳細については、「証明書形式の変換」をご参照ください。
PKCS#12 (PFX) 形式の証明書を使用できますか?
はい。PKCS#12 (PFX) 形式の証明書を使用できます。
証明書をCLBにアップロードする前に、証明書形式をPEMに変換する必要があります。 詳細については、「証明書形式の変換」をご参照ください。
証明書をアップロードするときにKeyEncryptionエラーが発生するのはなぜですか。
秘密鍵に誤った内容が含まれているため、エラーが発生します。 詳細については、「証明書の要件」をご参照ください。
HTTPSリスナーでサポートされているSSLプロトコルバージョン
HTTPSリスナーは、TLSv1.0、TLSv1.1、TLSv1.2、およびTLSv1.3のSSLプロトコルバージョンをサポートしています。
HTTPSセッションチケットのTTLとは何ですか?
HTTPSセッションチケットのTTLは300秒です。
DH PARAMETERSフィールドを含む証明書をアップロードできますか。
HTTPSリスナーで使用されるECDHE暗号スイートは、前方秘密をサポートしますが、DHE暗号スイートで必要なセキュリティ強化パラメーターはサポートしていません。 その結果、PEM証明書ファイルのBEGIN DH PARAMETERSフィールドを含む文字列はアップロードできません。
HTTPS リスナーは SNI をサポートしていますか。
Server Name Indication (SNI) は、SSLとTLSの拡張機能であり、サーバーが同じIPアドレスに複数のSSL証明書をインストールできるようにします。 詳細については、「追加ドメイン名の追加と管理」をご参照ください。
HTTPおよびHTTPSリスナーがバックエンドサーバーにアクセスするときに使用するHTTPのバージョン
リクエストがHTTP/1.1またはHTTP/2を使用する場合、レイヤー7リスナーはHTTP/1.1を使用してリクエストをバックエンドサーバーに配信します。
リクエストがHTTP/1.1およびHTTP/2以外のプロトコルを使用する場合、レイヤー7リスナーはHTTP/1.0を使用してリクエストをバックエンドサーバーに配信します。
バックエンドサーバーは、クライアントがHTTPまたはHTTPSリスナーにアクセスするために使用するプロトコルバージョンを取得できますか?
はい。バックエンドサーバーは、クライアントがHTTPまたはHTTPSリスナーにアクセスするために使用するプロトコルバージョンを取得できます。
HTTP/HTTPS リスナーに指定されているタイムアウト時間の値は何ですか。
HTTP永続接続では、最大100のリクエストを連続して送信できます。 制限に達すると、接続は閉じられます。
HTTP永続接続を介した2つのHTTPまたはHTTPSリクエスト間のタイムアウト期間は、1〜60秒の値に設定できます。 実際のタイムアウト期間には、1秒または2秒の時間誤差がある場合があります。 TCP接続は、タイムアウト期間が指定された値に達すると閉じられます。 顧客がHTTP永続接続を使用する場合は、13秒以内にハートビートリクエストを送信するようにクライアントを設定します。
CLBとバックエンドのElastic Compute Service (ECS) インスタンス間のTCPスリーウェイハンドシェイクのタイムアウト時間は5秒です。 ハンドシェイクがタイムアウトすると、CLBは次のECSインスタンスを選択します。 アクセスログでアップストリームの応答時間を確認することで、タイムアウトレコードを見つけることができます。
CLBがECSインスタンスからの応答を待機する時間は、1〜180秒の範囲の値に設定できます。 待機時間が指定されたタイムアウト期間に達すると、HTTP 504または408ステータスコードがクライアントに送信されます。 アクセスログでアップストリームの応答時間を確認することで、タイムアウトレコードを見つけることができます。
300秒後、HTTPSセッションの再利用がタイムアウトします。 その後、クライアントは完全なSSLハンドシェークプロセスを再度実行する必要があります。
WebSocketをサポートするようにCLBインスタンスのリスナーを設定するにはどうすればよいですか。
デフォルトでは、CLBインスタンスのHTTPリスナーはWebSocketをサポートしています。 詳細については、「WebSocketおよびWebSocket Secureのサポートに関するFAQ」をご参照ください。