このトピックでは、MSE クラウドネイティブゲートウェイの使用に関するよくある質問 (FAQ) に回答します。
MSE クラウドネイティブゲートウェイは IPv6 をサポートしていますか?
はい、サポートしています。ゲートウェイのトラフィックイングレスは、Classic Load Balancer (CLB) または Network Load Balancer (NLB) インスタンスです。[概要] ページで、[ゲートウェイイングレス] タブをクリックし、IPv6 が有効になっている CLB または NLB インスタンスをアタッチできます。
クラウドネイティブゲートウェイは x-real-ip リクエストヘッダーをサポートしていますか?
いいえ、デフォルトではこのヘッダーをサポートしていません。x-real-ip ヘッダーは Nginx に固有です。これを使用するには、ゲートウェイの [http-real-ip] プラグインを有効にする必要があります。このプラグインは、その構成に従ってクライアント IP アドレスを抽出し、x-real-ip リクエストヘッダーに書き込みます。
クラウドネイティブゲートウェイは x-forwarded-for リクエストヘッダーをサポートしていますか?
はい、サポートしています。元のリクエストに x-forwarded-for ヘッダーが含まれている場合、ゲートウェイは前のホップの IP アドレスをヘッダーの末尾に追加します。元のリクエストに x-forwarded-for ヘッダーが含まれていない場合、ゲートウェイはヘッダーを追加し、前のホップの IP アドレスを含めます。
Spring Boot の組み込み Tomcat は、デフォルトで x-forwarded-for ヘッダーの最後のアドレスを削除します。この削除を防ぐには、server.forward-headers-strategy=none 構成を Spring Boot に追加します。
クラウドネイティブゲートウェイがリクエストを転送するときに「upstream connect error or disconnect/reset header」というメッセージが表示された場合はどうすればよいですか?
この問題は、バックエンドサービスのセキュリティグループが、ゲートウェイがサービスポートにアクセスすることを許可していないために発生します。ゲートウェイインスタンスの [概要] ページで、[セキュリティグループの権限付与] タブをクリックします。次に、[セキュリティグループの権限付与] をクリックして、セキュリティグループルールを追加します。ゲートウェイはリクエストを ACK クラスターの Pod IP アドレスに直接転送します。セキュリティグループの権限付与で Pod が使用するポートを開く必要があります。
クラウドネイティブゲートウェイでヘッダーを使用してドメイン名を照合するにはどうすればよいですか?
ルートを作成するときに、リクエストヘッダーの照合ルールを追加できます。ヘッダー名には :authority を入力します。ヘッダー値には、特定のドメイン名を入力します。
クラウドネイティブゲートウェイのプラグインログを表示できない場合はどうすればよいですか?
この問題は、次の理由で発生する可能性があります。
現在のログレベルが Trace または Debug に設定されているため、ログが出力されません。デフォルトでは、プラグインは Info レベル以上のログのみを出力します。
コンパイルの問題により、プラグインが期待どおりに起動しませんでした。この場合、デフォルトのログ検索文をクリアして、プラグインの起動中に生成されたエラーログを表示します。プラグイン開発ドキュメントの指示に従ってプラグインコードをコンパイルします。次に、docker compose モードを使用してプラグインをローカルでデバッグし、プラグインを検証します。検証後、プラグインをクラウドネイティブゲートウェイにアップロードできます。
リクエストボディが大きすぎるためにエラーが報告された場合はどうすればよいですか?
この問題は、ゲートウェイの接続バッファーが小さすぎるために発生します。バッファーサイズを増やすことができます:
プロトコルが HTTP/1.x の場合は、コンソールで
DownstreamConnectionBufferLimitsパラメーターを調整します。プロトコルが HTTP/2 の場合は、コンソールで
DownstreamConnectionBufferLimitsおよびInitialStreamWindowSizeパラメーターを調整します。
クラウドネイティブゲートウェイにサービスソースを追加する際の制限は何ですか?
単一のゲートウェイインスタンスは、最大 3 つの ACK コンテナーサービスに関連付けることができます。
単一のゲートウェイインスタンスは、最大 3 つの Nacos インスタンスに関連付けることができます。
クラウドネイティブゲートウェイにサービスソースを追加するときに、既存の Nacos または ACK インスタンスを選択できないのはなぜですか?
クラウドネイティブゲートウェイは、同じ VPC 内にある Nacos または ACK インスタンスのみを追加できます。異なる VPC 間でサービスソースを追加することはできません。
クラウドネイティブゲートウェイはカスタム HTTPS 証明書をサポートしていますか?
クラウドネイティブゲートウェイは証明書をホストしません。Alibaba Cloud SSL 証明書サービスから証明書を取得します。SSL 証明書サービスコンソールで独自の証明書をアップロードし、ゲートウェイドメイン名用に構成できます。
クラウドネイティブゲートウェイコンソールでのパラメーターの変更は、既存のトラフィックに影響しますか?
XffTrustedNumパラメーターを変更した後、変更を有効にするにはゲートウェイを再起動する必要があります。UpstreamIdleTimeoutパラメーターを変更すると、アップストリーム接続が閉じられ、再確立されます。DownstreamIdleTimeパラメーターを変更すると、ダウンストリーム接続が閉じられ、再確立されます。
CLB インスタンスのポート 443 のヘルスチェックステータスが異常な場合はどうすればよいですか?
ポート 443 のヘルスチェックステータスが異常なのは、HTTPS ドメイン名が構成されていない場合にゲートウェイがこのポートをリッスンしないためです。これを解決するには、ゲートウェイで HTTPS ドメイン名を設定する必要があります。詳細については、「ドメイン名の作成」をご参照ください。Ingress を使用する場合は、「K8s Ingress」をご参照ください。
クラウドネイティブゲートウェイでサービスを作成した後、サービスのヘルスチェックステータスが異常な場合はどうすればよいですか?
ゲートウェイがリクエストをバックエンドサービスに転送するには、ネットワーク経由でバックエンドサービスに接続できる必要があります。サービスのヘルスチェックステータスが異常な場合、原因は通常次のいずれかです。
VPC 内のプライベートサービスの場合、バックエンドサービスのセキュリティグループが、ゲートウェイが対応するポートにアクセスできるように構成されているかどうかを確認します。詳細については、「セキュリティグループルールを設定する」をご参照ください。
インターネット上のサービスの場合、VPC がインターネットにアクセスできるかどうかを確認します。インターネット NAT ゲートウェイの SNAT 機能を使用してインターネットにアクセスできます。詳細については、「インターネット NAT ゲートウェイの SNAT 機能を使用してインターネットにアクセスする」をご参照ください。
HTTP ヘルスチェックの場合、リクエストパスとリクエストドメイン名が正しく設定されていることを確認してください。
HTTP ヘルスチェックの場合、バックエンドサービスのヘルスチェックインターフェイスに HTTPS 経由でアクセスする必要がある場合は、サービスのポリシー構成でモードを一方向 TLS に設定します。
HTTP ヘルスチェックの場合、上記の手順を実行しても問題が解決しない場合は、ヘルスチェックの間隔がバックエンドサービスの接続キープアライブ時間と同じである可能性があります。ヘルスチェックの間隔を長くしてみてください。
リクエストエラーの原因を特定するにはどうすればよいですか?
応答ヘッダーに
x-envoy-upstream-service-timeヘッダーが含まれているかどうかを確認します。応答にx-envoy-upstream-service-timeヘッダーが含まれている場合、ゲートウェイはリクエストをバックエンドサービスに転送して処理しています。この場合、後続のリクエストエラーはバックエンドサービスのロジックが原因である可能性が高いです。ゲートウェイのアクセスログの
upstream_service_timeフィールドが空かどうかを確認します。アクセスログのupstream_service_timeフィールドが空でない場合、ゲートウェイはリクエストをバックエンドサービスに転送して処理しています。この場合、後続のリクエストエラーはバックエンドサービスのロジックが原因である可能性が高いです。
クラウドネイティブゲートウェイで更新された後、HTTPS 証明書が有効にならない場合はどうすればよいですか?
この問題は通常、HTTPS 証明書が CLB、DCDN、WAF、または Anti-DDoS Pro および Anti-DDoS Premium インスタンスなどのアップストリームノードでも構成されているために発生します。アップストリームノードの HTTPS 証明書も更新されているかどうかを確認します。ベストプラクティスは、HTTPS 証明書を 1 か所だけで構成することです。DCDN または WAF がゲートウェイのアップストリームに接続されている場合は、DCDN または WAF でのみ HTTPS を構成し、バックエンドゲートウェイには HTTP を使用できます。
クラウドネイティブゲートウェイのパラメーター構成の変更が有効にならない場合はどうすればよいですか?
この問題は通常、MSE Ingress が使用されているために発生します。MseIngressConfig には関連する設定項目が含まれています。MSE Ingress は、MseIngressConfig の設定項目を MSE ゲートウェイコンソールに自動的に同期します。コンソールで設定項目を変更すると、変更が MSE Ingress から同期された情報によって上書きされる可能性があります。設定項目は MSE Ingress でのみ変更することをお勧めします。
クラウドネイティブゲートウェイのルーティング優先度はどのようにソートされますか?
ゲートウェイインスタンスの [ルート設定] ページのルート構成の順序によって、ルート照合の優先度が決まります。リストは優先度の降順でソートされます。照合の優先度は、ドメイン名とルーティングルールによって異なります。ドメイン名の場合、完全一致ドメイン名はワイルドカードドメイン名よりも優先度が高くなります。たとえば、test.example.com は *.example.com よりも優先度が高くなります。同じドメイン名を持つルーティングルールの場合、パスの優先度は完全に一致 > プレフィックス一致 > 正規表現一致です。同じドメイン名とパスを持つルーティングルールの場合、優先度は照合条件が多い > 照合条件が少ないです。照合条件には、ヘッダーとクエリパラメーターが含まれます。
クラウドネイティブゲートウェイが DCDN に接続されている場合、HTTPS リクエストが失敗するのはなぜですか?
この問題は通常、DCDN がゲートウェイにオリジンフェッチリクエストを送信するときに SNI を含めないために発生します。DCDN のオリジンフェッチ構成でオリジン SNI を設定できます。
クラウドネイティブゲートウェイが WAF に接続されている場合、HTTPS リクエストが失敗するのはなぜですか?
この問題は通常、WAF がゲートウェイにオリジンフェッチリクエストを送信するときに SNI を含めないために発生します。CNAME レコードモードを使用して WAF にドメイン名を追加する場合は、ドメイン名設定を変更する必要があります。[転送設定] で、[オリジン SNI を有効にする] を選択します。
クラウドネイティブゲートウェイは Websocket をサポートしていますか?
はい、サポートしています。WebSocket プロトコルのサポートはデフォルトで有効になっています。
クラウドネイティブゲートウェイは gRPC をサポートしていますか?
はい、サポートしています。gRPC は HTTP/2 プロトコルを使用して送信します。ゲートウェイの [パラメーター設定] ページで、EnableHttp2 = true であることを確認します。
クラウドネイティブゲートウェイは GZIP 展開をサポートしていますか?
はい、サポートしています。ゲートウェイの [パラメーター設定] ページで、EnableGzip = true であることを確認します。Gzip および Brotli 圧縮アルゴリズムがサポートされています。ZipAlgorithm パラメーターを使用してアルゴリズムを構成できます。デフォルト値は Gzip です。
クラウドネイティブゲートウェイはリクエストヘッダーとレスポンスヘッダーの大文字と小文字の区別を維持することをサポートしていますか?
はい、サポートしています。ゲートウェイの [パラメーター設定] ページで、PreserveHeaderFormat = true であることを確認します。このパラメーターは HTTP/1.0 または HTTP/1.1 でのみ有効です。仕様によると、HTTP/2 プロトコルでは、すべてのリクエストヘッダーとレスポンスヘッダーを小文字にする必要があります。
クラウドネイティブゲートウェイは HTTP/3 をサポートしていますか?
はい、サポートしています。ゲートウェイの [パラメーター設定] ページで、EnableHttp3 = true であることを確認します。
クラウドネイティブゲートウェイはカスタムリスナーポートをサポートしていますか?
はい、サポートしています。クラウドネイティブゲートウェイは HTTP (ポート 80) と HTTPS (ポート 443) をサポートしています。CLB コンソールでは、TCP ポート 8080 などのリスナーポートを追加し、ポート 80 を同じ vServer グループに割り当てて HTTP リクエストを処理できます。
リクエストがゲートウェイを通過した後、すべてのリクエストヘッダーとレスポンスヘッダーが小文字になるのはなぜですか?
デフォルトでは、ゲートウェイはすべてのリクエストヘッダーとレスポンスヘッダーを小文字に変換します。大文字と小文字を区別するには、ゲートウェイの [パラメーター設定] ページで、PreserveHeaderFormat = true を設定します。
クラウドネイティブゲートウェイで DNS ドメイン名サービスを作成した後、アクセスが失敗するのはなぜですか?
構成された DNS ドメイン名がインターネットドメイン名である場合、ゲートウェイがインターネットにアクセスできるようにするには、NAT Gateway コンソールで SNAT を構成する必要があります。デフォルトでは、ゲートウェイはインターネットにアクセスできません。
リクエストで 400 エラーが発生した場合はどうすればよいですか?
このエラーは通常、次の 2 つの理由のいずれかで発生します。
クライアントから送信されたプロトコルが無効です。ゲートウェイのアクセスログを表示できます。ログには
response_flags = DPEが含まれています。バックエンドサービスが 400 エラーを返します。これは、ゲートウェイのアクセスログを表示することで確認できます。
response_flagsフィールドが空で、upstream_hostフィールドに値がある場合、バックエンドサービスが 400 エラーを返しました。upstream_hostの値は、ゲートウェイがリクエストを転送したバックエンドの IP アドレスです。
予備分析には [AI 診断] 機能を使用することをお勧めします。
リクエストで 401 エラーが発生した場合はどうすればよいですか?
このエラーは通常、次の 2 つの理由のいずれかで発生します。
ゲートウェイは、アクセス資格情報が提供されていないことを示すメッセージを返します。認証または Wasm プラグインが有効になっているかどうかを確認します。
バックエンドサービスが 401 エラーを返します。これは、ゲートウェイのアクセスログを表示することで確認できます。
response_flagsフィールドが空で、upstream_hostフィールドに値がある場合、バックエンドサービスが 401 エラーを返しました。upstream_hostの値は、ゲートウェイがリクエストを転送したバックエンドの IP アドレスです。
予備分析には [AI 診断] 機能を使用することをお勧めします。
リクエストで 403 エラーが発生した場合はどうすればよいですか?
このエラーは通常、次の 2 つの理由のいずれかで発生します。
ゲートウェイは、リソースにアクセスするために必要な権限がないことを示すメッセージを返します。IP アドレスベースのブラックリストとホワイトリスト、認証、または Wasm プラグインが有効になっているかどうかを確認します。
バックエンドサービスが 403 エラーを返します。これは、ゲートウェイのアクセスログを表示することで確認できます。
response_flagsフィールドが空で、upstream_hostフィールドに値がある場合、バックエンドサービスが 403 エラーを返しました。upstream_hostの値は、ゲートウェイがリクエストを転送したバックエンドの IP アドレスです。
予備分析には [AI 診断] 機能を使用することをお勧めします。
リクエストで 404 エラーが発生した場合はどうすればよいですか?
このエラーは通常、次の 2 つの理由のいずれかで発生します。
ゲートウェイに対応するルーティングルールがありません。ゲートウェイのアクセスログを表示できます。ログに
response_flags = NRが含まれている場合、ゲートウェイにルーティングルールが構成されていません。バックエンドサービスが 404 エラーを返します。これは、ゲートウェイのアクセスログを表示することで確認できます。
response_flagsフィールドが空で、upstream_hostフィールドに値がある場合、バックエンドサービスが 404 エラーを返しました。upstream_hostの値は、ゲートウェイがリクエストを転送したバックエンドの IP アドレスです。
予備分析には [AI 診断] 機能を使用することをお勧めします。
リクエストで 405 エラーが発生した場合はどうすればよいですか?
WAF 保護が有効になっており、リクエストが WAF 保護ルールをトリガーしました。この状態コードは WAF によって返されます。
リクエストで 413 エラーが発生した場合はどうすればよいですか?
このエラーは通常、次の 2 つの理由のいずれかで発生します。
リクエストサイズがゲートウェイの接続バッファーサイズを超えています。[パラメーター設定] ページで、
DownstreamConnectionBufferLimitsパラメーターの値を増やします。バックエンドサービスが 413 エラーを返します。これは、ゲートウェイのアクセスログを表示することで確認できます。
response_flagsフィールドが空で、upstream_hostフィールドに値がある場合、バックエンドサービスが 413 エラーを返しました。upstream_hostの値は、ゲートウェイがリクエストを転送したバックエンドの IP アドレスです。
予備分析には [AI 診断] 機能を使用することをお勧めします。
リクエストで 429 エラーが発生した場合はどうすればよいですか?
ゲートウェイのスロットリングルールがトリガーされました。ゲートウェイのアクセスログを表示できます。ログに response_flags = RL が含まれている場合は、ゲートウェイのスロットリングルールを確認してください。
予備分析には [AI 診断] 機能を使用することをお勧めします。
リクエストで 502 エラーが発生した場合はどうすればよいですか?
このエラーは通常、次の 2 つの理由のいずれかで発生します。
バックエンドサービスがリクエストプロトコルエラーを返します。ゲートウェイのアクセスログを表示できます。ログに
response_flags = UPEが含まれている場合、最も一般的な原因は、バックエンドサービスから返されたヘッダーに重複したTransfer-Encodingフィールドが含まれていることです。この場合は、バックエンドサービスを確認してください。バックエンドサービスが 502 エラーを返します。これは、ゲートウェイのアクセスログを表示することで確認できます。
response_flagsフィールドが空で、upstream_hostフィールドに値がある場合、バックエンドサービスが 502 エラーを返しました。upstream_hostの値は、ゲートウェイがリクエストを転送したバックエンドの IP アドレスです。
予備分析には [AI 診断] 機能を使用することをお勧めします。
リクエストで 503 エラーが発生した場合はどうすればよいですか?
このエラーは通常、次のいずれかの理由で発生します。
ゲートウェイ用に構成されたルーティングルールの宛先サービスに、正常な IP アドレスがありません。ゲートウェイのアクセスログを表示できます。ログには
response_flags = UHが含まれています。ゲートウェイがリクエストを転送するときに、バックエンドサービスによって接続が閉じられます。ゲートウェイのアクセスログを表示できます。ログに
response_flags = UCが含まれている場合、通常、バックエンドサービスのidle timeoutがゲートウェイのUpstreamIdleTimeoutよりも短くなっています。ゲートウェイの [パラメーター設定] ページで、UpstreamIdleTimeoutの値を小さくします。ゲートウェイはバックエンドサービスの IP アドレスに接続できません。ゲートウェイのアクセスログを表示できます。ログに
response_flags = UFまたはresponse_flags = URXが含まれている場合、通常、バックエンドサービスのセキュリティグループがゲートウェイからのアクセスを妨げています。バックエンドサービスのセキュリティグループが、ゲートウェイが対応するポートにアクセスできるように構成されているかどうかを確認します。詳細については、「セキュリティグループルールを設定する」をご参照ください。ゲートウェイに対応するバックエンドサービスがありません。ゲートウェイのアクセスログを表示できます。ログに
response_flags = NCが含まれている場合、原因は通常次のいずれかです。対応するサービスはもう存在しません。
バックエンドサービスに複数のポートがある場合は、ルーティングルールの宛先サービスを選択するときに、動的ポートではなく固定ポートを選択する必要があります。
バックエンドサービスは固定ポートを選択しましたが、サービスポートが変更されました。
バックエンドサービスが 503 エラーを返します。
response_flagsフィールドが空で、upstream_hostフィールドに値がある場合、バックエンドサービスが 503 エラーを返しました。upstream_hostの値は、ゲートウェイがリクエストを転送したバックエンドの IP アドレスです。
予備分析には [AI 診断] 機能を使用することをお勧めします。
ログの response_code フィールドの値が 0 なのはなぜですか?
ログの response_code フィールドの値が 0 の場合は、クライアントが応答コードを受信しなかったことを示します。
このエラーは通常、次の 2 つの理由のいずれかで発生します。
クライアントが接続を途中で閉じます。たとえば、モバイルネットワークの信号が弱い場合や、バックエンドの応答時間が長すぎる場合、クライアントは接続を途中で閉じることがあります。ログでは、response_flags フィールドの値が "DC" であるかどうかを確認することで、これを確認できます。
HTTPS リクエストに SNI が含まれておらず、ワイルドカードドメイン名 (*) に HTTPS 証明書が構成されていません。SNI は、ドメイン名情報を含む TLS 拡張機能です。ログでは、requested_server_name フィールドが空であるかどうかを確認することで、これを確認できます。
予備分析には [AI 診断] 機能を使用することをお勧めします。