ASM ゲートウェイまたはサイドカープロキシは、アップストリームサービスにレスポンスを転送する代わりに、特定のステータスコードを持つ HTTP レスポンスをダウンストリームサービスに直接返す場合があります。CustomLocalReply プラグインを使用すると、ASM ゲートウェイまたはサイドカープロキシがダウンストリームサービスに返すレスポンス本文、レスポンスコード、およびレスポンスヘッダーをカスタマイズできます。レスポンスコードごとに固有のレスポンスコンテンツを指定できます。
前提条件
イングレスゲートウェイがデプロイされていること。詳細については、「イングレスゲートウェイの作成」をご参照ください。
HTTPBin サービスがデータプレーンクラスターにデプロイされていること。詳細については、「HTTPBin アプリケーションのデプロイ」をご参照ください。
構成フィールド
名前 | データ型 | 必須 | 有効な値 | 説明 |
patch_context | String | はい |
プラグインをアタッチするワークロードのタイプ(ASM ゲートウェイまたは特定のビジネスワークロード)に基づいてパラメーターを構成します。 | プラグインが実行されるコンテキストとランタイム環境を指定します。 |
custom_error_pages | CustomErrorPage[] | はい | - | CustomErrorPage オブジェクトのリストを指定します。各 CustomErrorPage オブジェクトは、ASM ゲートウェイまたはサイドカープロキシによって直接返されるレスポンスコードと、そのレスポンスコードを受信したときに返されるレスポンスコンテンツを指定します。 |
CustomErrorPage フィールドの説明
ASM ゲートウェイがリクエストに一致するルーティングルールを見つけられない場合、HTTP ステータスコード
404を返します。ASM ゲートウェイまたはサイドカープロキシが承認ポリシーで構成されており、リクエストが承認ポリシーによって拒否された場合、HTTP ステータスコード
403を返し、レスポンスコンテンツはRBAC: Access Deniedに固定されます。仮想サービスで
directResponseが構成されている場合、ASM ゲートウェイまたはサイドカープロキシは、指定された HTTP ステータスコードとレスポンス本文を直接返します。
名前 | データ型 | 必須 | デフォルト値 | 説明 |
match_status_code | Integer | はい | - | ASM ゲートウェイまたはサイドカープロキシによって直接返される、一致する HTTP ステータスコードを指定します。ASM ゲートウェイまたはサイドカープロキシが指定された HTTP ステータスコードを返すと、指定された構成が適用され、事前定義されたレスポンス本文が返されます。 |
return_status_code | Integer | はい | - | ダウンストリームサービスに返される HTTP ステータスコードを指定します。 |
content_type | String | はい | - | ダウンストリームサービスに返される |
headers | Map[string]string | オプション | null | カスタムレスポンスのレスポンスヘッダーを指定します。 |
body | String | はい | - | カスタムレスポンスのレスポンス本文を指定します。 |
設定例
ASM インスタンスに次の仮想サービスをデプロイします。
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: httpbin
namespace: default
spec:
gateways:
- httpbin-gateway
hosts:
- '*'
http:
- directResponse:
body:
string: not found
status: 404上記の仮想サービスでは、directResponse を構成して、ASM ゲートウェイがリクエストをアップストリームサービスに転送する代わりに HTTP ステータスコード 404 を直接返すようにします。
次の構成を使用して CustomLocalReply プラグインを有効にし、ingressgateway という名前の ASMイングレスゲートウェイにプラグインを適用します。
patch_context: GATEWAY
custom_error_pages:
- match_status_code: 404
return_status_code: 301
headers:
location: 'https://www.aliyun.com'
content_type: text/html; charset=UTF-8
body: movedこの構成により、ASM ゲートウェイによって直接返される HTTP ステータスコード 404 を HTTP ステータスコード 301 (Moved Permanently) に変更し、レスポンスヘッダーに location: https://www.aliyun.com を構成して、ブラウザーを https://www.aliyun.com にリダイレクトできます。
ブラウザーを使用して ASM ゲートウェイの IP アドレスにアクセスすると、Alibaba Cloud 公式 Web サイト https://www.aliyun.com にリダイレクトされます。これは、変更されたプラグイン構成が有効になっていることを示します。