Skip to main content
Version: 2.8.1

Request Termination

用途說明#

此插件會終止所有請求並回傳指定的狀態碼和訊息。其允許(暫時)暫停服務或路由的流量,甚至可以阻擋用戶的請求。

欄位配置說明#

變數類型預設值說明必填
status_codenumber503要送出的狀態碼。
可填入的數值的範圍為 100 至 599。
messagestring要送出的訊息(假設使用預設的回應產生器)。
bodystring要送出的 raw response body 。
此欄位與 message 為互斥欄位。
content_typestringraw response 的 content type。
echobooleanfalse設置後,插件會將請求的副本回給客戶端。
主要的 usecase 是 debugging。
它可以與 trigger 結合使用,以便在不干擾實際流量的情況下 debug 線上系統的請求。
V
triggerstring未設置時,插件始終啟用。
當設置為文字串 (string) 時,插件將僅在包含名為該字符串的標頭或查詢參數的請求上啟用。

用法示例#

在全局啟用插件#

  1. 從網站左邊 Menu 中 外掛插件 頁面中,點選右上角的 新增外掛插件

全局啟用畫面

  1. 點選後,選擇 流量控管 頁籤,並啟用 Request Termination,填寫內容參考欄位配置說明,設定成功後,任何請求(不分服務、路由、用戶)皆會被阻擋。

在服務端上啟用插件#

  1. 從網站左邊 Menu 中 服務 > 服務列表 頁面中,選擇要啟用此插件的服務,假設為 google,點選對應的編輯按鈕:

服務啟用畫面1

  1. 在編輯畫面中,點選上方的 外掛插件 頁籤,再點選頁籤內容上方的 新增外掛插件 按鈕:

服務啟用畫面2

點選後,選擇 流量控管 頁籤,並啟用 Request Termination,填寫內容參考欄位配置說明,設定成功後,僅有此服務(範例為google)請求會被阻擋。

在路由端上啟用插件#

可以由兩種方式來選擇路由,並啟用插件:

方式一:路由列表#

  1. 從網站左邊 Menu 中 服務 > 路由列表 頁面中,選擇要啟用此插件的路由,假設為 google,點選對應的編輯按鈕:

路由啟用畫面1

方式二:服務 > 服務列表 > 路由列表#

  1. 從網站左邊 Menu 中 服務 > 服務列表 頁面中,選擇要啟用此插件的路由 所屬之服務(假設為 google),點選對應的編輯按鈕。

在編輯畫面中,點選上方的 路由 頁籤,選擇要啟用此插件的路由(假設為 google),點選對應的編輯按鈕:

路由啟用畫面2


  1. 承第1步,點擊上述兩種方式之一的編輯按鈕後,在編輯畫面中,點選上方的 外掛插件 頁籤,再點選頁籤內容上方的 新增外掛插件 按鈕:

路由啟用畫面3

點選新增外掛插件 按鈕後,選擇 流量控管 頁籤,並啟用 Request Termination,填寫內容參考欄位配置說明,設定成功後,僅有此路由(範例為google)請求會被阻擋。

在用戶端上啟用插件#

  1. 從網站左邊 Menu 中 訂閱用戶 > 用戶列表 頁面中,選擇要啟用此插件的用戶,假設為 portaladmin,點選對應的編輯按鈕 :

用戶啟用畫面1

  1. 在編輯畫面中,點選上方的 外掛插件 頁籤,再點選頁籤內容上方的 新增外掛插件 按鈕:

用戶啟用畫面2

點選後,選擇 流量控管 頁籤,並啟用 Request Termination,填寫內容參考欄位配置說明,設定成功後,僅有此用戶(範例為 portaladmin)請求會被阻擋。

驗證#

於某個路由新增插件,並填入設定值。此範例在 status_codemessage 相繼填入 503 以及 The service is under maintenance now.

request-termination

新增插件後,送出請求(匹配該路由)會得到以下回應:

HTTP/1.1 503 Service Temporarily Unavailable
Date: Tue, 06 Apr 2021 08:45:50 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Content-Length: 51
X-Kong-Response-Latency: 134
{"message":"The service is under maintenance now."}