您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件。info
在內部部署環境中,您可以完全控管虛擬主機。您可以在任何環境中為任何機構建立虛擬主機,不論是否使用 TLS 皆可。
本文說明如何建立簡單的虛擬主機。也就是不支援 TLS 的網域。如需更多範例,包括如何建立支援 TLS 的虛擬主機的範例,請參閱為私有雲的 API 設定 TLS 存取權。
瞭解詳情:
關於主機別名
建立虛擬主機時,您必須指定虛擬主機的主機別名。通常是虛擬主機的 DNS 名稱。
Edge Router 會將傳入要求的 Host
標頭和可用主機別名清單進行比較,以決定處理要求的 API Proxy。透過虛擬主機提出要求時,請指定與虛擬主機主機別名相符的網域名稱,或是指定路由器的 IP 位址和包含主機別名的 Host
標頭。
舉例來說,如果您透過通訊埠 9001 建立具有 myapis.apigee.net 主機別名的虛擬主機,則透過該虛擬主機向 API 提出 cURL 要求時,可能會使用下列其中一種形式:
如果您有 myapis.apigee.net 的 DNS 項目:
curl http://myapis.apigee.net:9001/proxy-base-path/resource-path
如果您沒有 myapis.apigee.net 的 DNS 記錄:
curl http://routerIP:9001/proxy-base-path/resource-path -H 'host:myapis.apigee.net'
請使用這份表單,指定路由器的 IP 位址,並在
Host
標頭中傳遞主機別名。curl http://routerIP:9001/proxy-base-path/resource-path
沒有虛擬主機 DNS 項目時的選項
如果沒有 DNS 項目,其中一個選項是將主機別名設為路由器的 IP 位址,以及虛擬主機的通訊埠,例如 routerIP:port。例如:
192.168.1.31:9001
在下方表單中建立 curl
指令時:
curl http://routerIP:9001/proxy-base-path/resource-path
這個選項是首選,因為它與 Edge UI 搭配得很好。
如果您有多個 Router,請為每個 Router 新增主機別名,指定每個 Router 的 IP 位址和虛擬主機的通訊埠。
或者,您也可以將主機別名設為某個值,例如 temp.hostalias.com。接著,您必須在每次要求中傳遞 Host
標頭:
curl -v http://routerIP:9001/proxy-base-path/resource-path -H 'Host: temp.hostalias.com'
或在 /etc/hosts 檔案中新增主機別名。舉例來說,請在 /etc/hosts 中新增這行指令:
192.168.1.31 temp.hostalias.com
接著,您可以像使用 DNS 項目一樣提出要求:
curl -v http://myapis.apigee.net:9001/proxy-base-path/resource-path
關於 Private Cloud 4.16.01 以上版本的 Edge 虛擬主機通訊埠
建立虛擬主機時,您必須指定虛擬主機使用的 Router 連接埠。例如通訊埠 9001。
對於 Apigee for Private Cloud 4.16.01 以上版本,路由器預設會以「apigee」使用者身分執行,而這類使用者無法存取特權通訊埠,通常是 1024 以下的通訊埠。如果您想建立虛擬主機,將路由器繫結至受保護的通訊埠,則必須將路由器設為以具有這些通訊埠存取權的使用者身分執行。詳情請參閱「設定虛擬主機」。
建立虛擬主機
本節說明如何為 Apigee Edge for Private Cloud 建立虛擬主機。請注意,您必須是機構管理員,才能建立新的虛擬主機。
您可以使用 API 或 Edge UI 為 Apigee Edge for Private Cloud 建立虛擬主機。我們會在以下各節中說明這些功能。
使用瀏覽器建立虛擬主機
本節說明如何使用瀏覽器 (僅限 Edge UI) 建立虛擬主機。
如何在 Edge UI 中建立新的虛擬主機:
- 登入 Edge Management UI。
- 依序選取「管理」>「虛擬主機」。
從下拉式清單中選取環境。
Edge 會顯示該環境的虛擬主機清單。
- 如要建立新的虛擬主機,請選取「+ 虛擬主機」。
Edge 會顯示「Create Virtual Host」表單。
你也可以按一下現有虛擬主機的名稱來進行編輯。
- 定義新的虛擬主機。請注意,「Base URL」欄位必須包含通訊協定 (也就是在欄位值前加上「http://」或「https://」)。
此外,請注意下列事項:
- 您可以建立的虛擬主機數量沒有限制
- TLS 為選用項目,可使用 1.0、1.1 或 1.2 版
- 可以設定虛擬主機的通訊埠
- 按一下「Create」(建立) 按鈕即可儲存新的虛擬主機。
使用 API 建立虛擬主機
如要透過 API 建立虛擬主機,請建立定義虛擬主機的 XML 物件。舉例來說,以下 XML 物件會定義使用 HTTP 通訊協定的虛擬主機:
<VirtualHost name="myVHost"> <HostAliases> <HostAlias>DNS_name_or_IP:port</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> </VirtualHost>
請注意,虛擬主機包含 name
屬性。您可以使用 name
屬性的值設定 API Proxy 以使用虛擬主機。
接著,您可以透過這個虛擬主機存取 API Proxy,方法是提出以下要求:
http://routerIP:port/proxy-base-path/resource-path
https://routerIP:port/proxy-base-path/resource-path
在此情況下:
http
或https
:如果虛擬主機設為支援傳輸層安全標準 (TLS),請使用 HTTPS。如果虛擬主機不支援 TLS,請使用 HTTP。- routerIP:port 是虛擬主機的 IP 位址和通訊埠號碼。
- 建立 API Proxy 時,系統會定義 proxy-base-path 和 resource-path。
一般來說,您不會使用 IP 位址和通訊埠編號,將 API 發布給客戶。而是要為路由器和通訊埠定義 DNS 項目。例如:
http://api.myCompany.com/proxy-base-path/resource-path https://api.myCompany.com/proxy-base-path/resource-path
如果您定義了 DNS 項目,就必須為與 DNS 項目網域名稱相符的虛擬主機建立「主機別名」。主機別名必須與用戶端在 Host
標頭中傳遞的字串相符。在上述範例中,您會指定 api.myCompany.com
的主機別名。
<VirtualHost name="myVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> </VirtualHost>
如要建立使用 HTTP 通訊協定的虛擬主機,請執行下列步驟:
- 使用建立虛擬主機 API 建立虛擬主機,其中 ms-IP 是 Management Server 節點的 IP 位址或網域名稱:
$ curl -X POST -H "Content-Type:application/xml" \ http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \ -d '<VirtualHost name="newVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> </VirtualHost>' \ -u sysAdminEmail:password
- 為與主機別名相符的虛擬主機建立 DNS 記錄。
- 如果目前已有 API Proxy,請將虛擬主機新增至 Proxy 端點的
<HTTPConnection>
元素。系統會自動將虛擬主機新增至所有新的 API 代理程式。請參閱「 設定 API Proxy 以使用虛擬主機」一節。
修改虛擬主機
如要修改虛擬主機,請執行下列操作:
-
使用「Update a Virtual Host」API 更新虛擬主機,其中
<ms-IP>
是管理伺服器節點的 IP 位址或網域名稱。您必須在要求主體中指定虛擬主機的完整定義,而非只指定要變更的元素。在這個範例中,您將虛擬主機的通訊埠編號從 9008 變更為 9009:curl -X PUT -H "Content-Type:application/xml" \ http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \ -d '<VirtualHost name="newVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9009</Port> </VirtualHost>' \ -u email:password
-
僅限 Edge for Private Cloud 4.16.01 和 4.16.05 版本:如果您修改現有的虛擬主機,並且啟用或停用 TLS 時未變更連接埠號碼,則:
停止路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router stop
刪除
/opt/nginx/conf.d
中的任何檔案:rm -f /opt/nginx/conf.d/*
啟動路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router start
- 對所有路由器重複以上步驟。