本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
您可以指定一個 Proxy 做為另一個 Proxy 的目標端點,在 Proxy 鏈中有效連結這兩個 Proxy。以這種方式串連 Proxy 可避免網路躍點,進而提升整體效能。
透過 Proxy 鏈結,您可以指定一個 Proxy 是另一個 Proxy 的本機目標端點。
您可以使用 LocalTargetConnection
元素,而非使用 HTTPTargetConnection
元素呼叫第二個 Proxy。
<LocalTargetConnection> <APIProxy>myproxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
當您有提供某些離散低層級功能的 Proxy,而其他 Proxy 會耗用這些功能時,Proxy 鏈結就可能很有用。舉例來說,如果某個 Proxy 透過後端資料存放區公開建立/讀取/更新/刪除作業,則該 Proxy 可能會成為多個其他 Proxy 的目標 Proxy,這些 Proxy 會向用戶端公開資料。
影片:觀看短片,進一步瞭解 API Proxy 鏈結。
Proxy 鏈結的運作方式
Proxy 鏈結會使用本機連線,在從一個 Proxy 呼叫另一個 Proxy 時,盡量減少網路負擔。這類本機連線會略過負載平衡器、路由器和訊息處理器等網路功能,因此效率更高。
下圖說明透過 HTTPTargetConnection
和 LocalTargetConnection
(Proxy 鏈結) 連接 Proxy 的差異:
如要連結 Proxy,請指定其中一個 Proxy 是另一個 Proxy 的本機目標端點。如果是上圖中的設定 (透過 Proxy 鏈結的 Proxy 對 Proxy 呼叫),您會指定 ProxyB (/proxyB) 是 ProxyA (/proxyA) 的本機目標端點。這會導致傳送至 ProxyA 的要求轉送至 ProxyB。
您可以透過兩種方式在 Proxy 之間建立本機連線:
- 指定目標 Proxy 的名稱和 ProxyEndpoint 名稱
- 指定目標 Proxy 端點的路徑
您可以使用 LocalTargetConnection
元素,在 TargetEndpoint
設定中連結目標 Proxy,如下所述。
依 Proxy 名稱連結 Proxy
您可以依名稱指定目標 Proxy。從頭建立連線並共同開發 Proxy 時,您可能會發現這項功能最實用。如果您不知道名稱 (或名稱可能會變更),請考慮連線至目標 Proxy 的端點路徑,如下所述。
如要依名稱連線至目標 Proxy,請指定 Proxy 的名稱和 ProxyEndpoint
的名稱。
以下範例會指定名為 data-manager
的目標 Proxy,以及 data-manager
公開的 ProxyEndpoint
名稱。如需參考資訊,請參閱 API Proxy 設定參考資料。
<TargetEndpoint name="datamanager"> <PreFlow name="PreFlow"> <!-- PreFlow policies --> </PreFlow> <PostFlow name="PostFlow"> <!-- PostFlow policies --> </PostFlow> <LocalTargetConnection> <APIProxy>data-manager</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </TargetEndpoint>
依路徑連結 Proxy
您可以依端點路徑指定目標 Proxy。如果您不知道 Proxy 名稱,或名稱可能會變更,建議採用這種做法。
如果您的 Proxy 只是目標 Proxy 的消費者 (例如您並未同時開發兩者),路徑可能是最可靠的連線方式。舉例來說,如果您連線的 Proxy 是由其他團隊開發及維護,您可能會想使用可靠的端點路徑連線。
以下範例會在 /v1/streetcarts/foodcarts/data-manager
指定目標 Proxy,假設主機與目前的 Proxy 相同。如需參考資訊,請參閱 API Proxy 設定參考資料。
<TargetEndpoint name="datamanager"> <PreFlow name="PreFlow"> <!-- PreFlow policies --> </PreFlow> <PostFlow name="PostFlow"> <!-- PostFlow policies --> </PostFlow> <LocalTargetConnection> <Path>/v1/streetcarts/foodcarts/data-manager</Path> </LocalTargetConnection> </TargetEndpoint>
<LocalTargetConnection>
下的 <Path>
元素可以是字串,也可以使用訊息範本動態指派值。
使用 Apigee UI 連接 Proxy
您也可以使用 Apigee UI,依 Proxy 名稱或路徑連線 Proxy。在下列範例中,有兩個 Proxy (ProxyA 和 ProxyB),您希望 ProxyB 成為 ProxyA 的目標端點。如要依 Proxy 名稱連結 Proxy,請按照下列步驟操作:
- 前往 Proxy 清單。
- 登入 Apigee 使用者介面。
- 在左側窗格中選取「Develop」>「Proxies」。
- 在 Proxy 清單中,選取「ProxyA」ProxyA。
- 按一下「開發」分頁標籤。
- 在「程式碼」窗格中,將 XML 的
<TargetEndpoint>
區段替換為下列程式碼:<TargetEndpoint> <LocalTargetConnection> <APIProxy>ProxyB</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </TargetEndpoint>
- 按一下 [儲存]。
Cloud 控制台中的 Apigee
在 Google Cloud 控制台中,前往「Proxy development」>「API proxies」頁面。
傳統版 Apigee UI
鏈結的 Proxy、API 產品和安全性
如果兩個 Proxy 位於同一個 API 產品中,最適合使用 Proxy 鏈結。根據預設,用戶端可使用這兩種方式。Apigee 目前不支援將第二個 Proxy 綁定至用戶端不應存取的獨立 API 產品。
如果第二個 Proxy 必須防範直接用戶端要求,請考慮新增邏輯,讓第二個 Proxy 檢查用戶端的 IP 位址。如果是使用鏈結發出的呼叫,IP 位址會是本機位址。您的程式碼可以先驗證是否為本機,再允許繼續處理。如要瞭解其中一種做法,請參閱 AccessControl 政策。