全部產品
Search
文件中心

Alibaba Cloud Service Mesh:CustomLocalReply外掛程式

更新時間:Oct 09, 2024

ASM網關或網格代理在特定情況下,可能直接向下遊返回帶有特定響應碼的HTTP響應,而不會將請求代理到上遊服務。CustomLocalReply外掛程式可以自訂ASM網關或網格代理在直接向下遊響應時的響應體、響應碼以及響應內容。對於每種響應碼,可以分別定義不同的響應內容。

前提條件

配置欄位

名稱

資料類型

填寫要求

預設值

描述

patch_context

string

必填

-

指定外掛程式啟動並執行上下文環境,有兩種可選值:

  • GATEWAY:外掛程式運行與ASM網關上。

  • SIDECAR_INBOUND:外掛程式運行於Sidecar代理上。

需要根據您實際將外掛程式綁定到的工作負載類型(ASM網關或具體業務工作負載)來選擇。

custom_error_pages

CustomErrorPage[]

必填

-

一個CustomErrorPage對象的列表,每個CustomErrorPage對象指定了匹配的直接返迴響應碼、以及匹配到響應碼後需要返回的響應內容。

CustomErrorPage欄位說明

  • 當ASM網關無法找到能夠匹配請求的路由項時,將返回404響應碼

  • 當ASM網關或網格代理配置了授權策略,且請求被授權策略拒絕時,將返回403響應碼,響應內容固定為RBAC: Access Denied

  • 當在虛擬服務中配置了directResponse時,ASM網關或網格代理會直接返回指定的響應碼及響應體。

名稱

資料類型

填寫要求

預設值

描述

match_status_code

int

必填

-

匹配的直接返迴響應碼,當ASM網關或網格代理返回此處指定的響應碼時,將應用指定的配置來返回預定義的響應體。

return_status_code

int

必填

-

實際向下遊返回的響應碼。

content_type

string

必填

-

實際向下遊返回的content-type

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網關直接返回一個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網關直接返回404響應碼時,將響應修改為一個301(Moved Permanently)響應,並在回應標頭中設定location: https://www.aliyun.com,讓瀏覽器跳轉到https://www.aliyun.com

使用瀏覽器訪問ASM網關IP地址,可以發現瀏覽器跳轉到了阿里雲官方網站https://www.aliyun.com,說明外掛程式生效。