本頁適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
您可以指定一個 Proxy 為另一個 Proxy 的目標端點,有效地在 Proxy 鏈結中連結兩個 Proxy。以這種方式連結 Proxy 可避免網路躍點,進而提升整體效能。
使用 Proxy Chaining 時,您可以指定一個 Proxy 是另一個 Proxy 的本機目標端點。請改用 LocalTargetConnection
元素,而非使用 HTTPTargetConnection
元素呼叫第二個 Proxy。
<LocalTargetConnection> <APIProxy>myproxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
如果您有提供其他 Proxy 可用的獨立低階功能的 Proxy,Proxy 鏈結可能會很實用。舉例來說,透過後端資料儲存庫公開建立/讀取/更新/刪除作業的 Proxy,可以是將資料公開給用戶端的多個其他 Proxy 的目標 Proxy。
影片:觀看短片,進一步瞭解 API Proxy 鏈結。
代理程式鏈結的運作方式
在從一個 Proxy 呼叫另一個 Proxy 時,Proxy 鏈結會使用本機連線,盡量減少網路開銷。這類本機連線可略過負載平衡器、路由器和訊息處理器等網路功能,因此效率更高。
以下說明使用 HTTPTargetConnection
和 LocalTargetConnection
(proxy 鏈結) 連結 Proxy 的差異:
您可以指定其中一個 Proxy 為另一個 Proxy 的本地目標端點,藉此連結 Proxy。如要設定上圖所示的 Proxy-to-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 名稱或路徑。在以下範例中,有兩個 ProxyA 和 ProxyB,您希望 ProxyB 是 ProxyA 的目標端點。如要依 Proxy 名稱連結 Proxy,請執行下列步驟:
- 登入 Apigee UI。
- 在左側窗格中依序選取「Develop」>「Proxies」。
- 在 Proxy 清單中選取「ProxyA」ProxyA。
- 按一下「開發」分頁標籤。
- 在「Code」窗格中,將 XML 的
<TargetEndpoint>
部分替換為以下內容:<TargetEndpoint> <LocalTargetConnection> <APIProxy>ProxyB</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </TargetEndpoint>
- 按一下 [儲存]。
鏈結 Proxy、API 產品和安全性
在兩個 Proxy 都屬於同一個 API 產品的情況下,Proxy 鏈結最適合。根據預設,客戶可以使用這兩種方式。Apigee 目前不支援將第二個 Proxy 綁定至用戶端不應存取的個別 API 產品。
如果第二個 Proxy 必須針對直接的用戶端要求提供安全防護,建議您加入邏輯,讓第二個 Proxy 檢查用戶端的 IP 位址。如果是使用鏈結方式發出的呼叫,IP 位址會是本機。程式碼可在允許處理程序繼續之前,先驗證是否為本機。如要瞭解如何執行這項操作,請參閱「AccessControl 政策」。