通過配置HTTP重寫策略,您可以在將請求轉寄給目標後端服務之前修改請求的路徑和主機域,以滿足特定的業務環境和架構要求。重寫策略能夠精確地控制請求的路徑和主機域,並確保將請求正確地路由到適當的服務或端點。
配置HTTP重寫策略
HTTP重寫主要用於修改原始請求的路徑(Path)和主機域(Host)。
雲原生API Gateway提供了執行個體內和執行個體外兩種配置HTTP重寫策略的方式:
執行個體外API
登入雲原生API Gateway控制台。左側導覽列選擇API,並在頂部功能表列選擇地區。
單擊目標API,您可以在下拉框中選擇需要配置HTTP重寫策略的執行個體,或者選擇全部執行個體。

選擇路由列表中的目標路由。
執行個體內API
登入雲原生API Gateway控制台。左側導覽列選擇執行個體,並在頂部功能表列選擇地區。
在執行個體頁面,單擊目標網關執行個體ID。左側導覽列選擇API,單擊目標API。
選擇路由列表中的目標路由。
單擊策略配置頁簽,然後單擊入站處理的啟動策略/外掛程式。
單擊HTTP重寫卡片,在添加策略: HTTP重寫面板配置相關參數,然後單擊添加。
路徑(Path)重寫
對於路徑(Path)重寫,雲原生API Gateway支援2種重寫入模式:精確重寫和正則重寫。
首碼重寫
首碼重寫可以修改原始請求的Path首碼。
樣本一
原始請求的Path為/app/test,但轉寄給後端服務的Path為/test,配置方式建議如下:
路由匹配條件:匹配方式為首碼匹配,Path為
/app/。重寫:重寫方式為首碼重寫,Path為
/。
路由匹配條件的Path必須設定為/app/,因為首碼重寫只會修改首碼匹配字串。如果路由匹配條件的Path設定為/app,那麼經重寫後的Path結果將會是//test,不符合預期。
樣本二
原始請求的Path為/v1/test,但轉寄給後端服務的Path為/v2/test。配置方式建議如下:
路由匹配條件:匹配方式為首碼匹配,Path為
/v1。重寫:重寫方式為首碼重寫,Path為
/v2。
首碼重寫要求路由的匹配方式為首碼匹配,精確匹配和正則匹配不支援首碼重寫。由於路由匹配方式為首碼匹配且可以匹配所有帶有指定首碼Path的請求,所以您在配置首碼重寫時需要關注是否需要對所有這些請求進行重寫,否則建議使用精確重寫。
正則重寫
正則重寫可以部分修改原始請求的Path。正則重寫包括兩個元素,一個是模式比對串,用於匹配Path上需要修改的部分;另一個是替換串,用於替換匹配成功的Path部分。關於Regex的規範,請參見Regex文法。
樣本一
原始請求的Path為/aaa/one/bbb/one/ccc,但轉寄給後端服務的Path為/aaa/two/bbb/two/ccc,配置方式建議如下:
路由匹配條件:匹配方式為精確匹配,Path為
/aaa/one/bbb/one/ccc。重寫:重寫方式為正則重寫,模式串為
one,替換串為two。
樣本二
原始請求的Path為/httpbin/(.*)/(.*),希望去掉首碼/httpbin並且將兩個Regex部分進行位置交換,配置方式建議如下:
路由匹配條件:匹配方式為正則匹配,Path為
/httpbin/(.*)/(.*)。重寫:重寫方式為正則重寫,模式串為
/httpbin/(.*)/(.*),替換串為/\2/\1,其中\1表示第一個正則匹配到的字串,\2表示第二個正則匹配到的字串,對應Nginx中的$1,$2用法。
正則重寫屬於高階用法,文法較為複雜且一般用於特殊的情境,建議您選擇精確重寫。
主機域(Host)重寫
對於主機域(Host)重寫,雲原生API Gateway支援精確重寫。
例如,原始請求的Host為test.com,但轉寄給後端服務的Host為dev.com,在重寫策略中將重寫主機設定為dev.com。