設定私有雲的虛擬主機

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

如果在地端部署環境中安裝,您能完全控管虛擬主機。您可以針對任何機構使用 TLS 或不使用 TLS 的任何機構建立虛擬主機。

這份文件說明如何建立簡易的虛擬主機。也就是不支援 TLS。如需更多範例,包括如何建立支援 TLS 的虛擬主機的範例,請參閱為私有雲設定 API 的 TLS 存取權

瞭解詳情

關於主機別名

建立虛擬主機時,您必須指定虛擬主機的主機別名。通常是虛擬主機的 DNS 名稱。

在判斷處理要求的 API Proxy 時,Edge Router 會將傳入要求的 Host 標頭與可用的主機別名清單進行比較。透過虛擬主機提出要求時,請指定與虛擬主機主機別名相符的網域名稱,或指定路由器的 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 搭配運作。

如果您有多個路由器,請為各個路由器新增主機別名,並指定各個路由器的 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

關於 Edge 適用的 Private Cloud 4.16.01 以上版本虛擬主機通訊埠

建立虛擬主機時,您必須指定虛擬主機使用的路由器通訊埠。例如通訊埠 9001。

對於 Apigee for Private Cloud 4.16.01 以上版本,根據預設,路由器會以使用者「apigee」執行,無法存取具有特殊權限的通訊埠 (通常為 1024 以下版本的通訊埠)。如要建立將路由器繫結到受保護的通訊埠的虛擬主機,您必須將路由器設為以具備這些通訊埠存取權的使用者的身分執行。詳情請參閱「設定虛擬主機」一文。

建立虛擬主機

本節說明如何為私有雲的 Apigee Edge 建立虛擬主機。請注意,您必須是機構管理員,才能建立新的虛擬主機。

您可以使用 API 或 Edge UI 為 Apigee Edge 建立私有雲的虛擬主機。詳情請見以下各節。

使用瀏覽器建立虛擬主機

本節說明如何使用瀏覽器建立虛擬主機 (僅限 Edge UI)。

如何在 Edge UI 中建立新的虛擬主機:

  1. 登入 Edge 管理 UI。
  2. 依序選取「Admin」>「Virtual Hosts」
  3. 從下拉式清單中選取環境。

    Edge 會顯示該環境的虛擬主機清單。

  4. 如要建立新的虛擬主機,請選取「+ Virtual Host」

    Edge 會顯示「Create Virtual Host」表單。

    您也可以按一下現有虛擬主機的名稱進行編輯。

  5. 定義新的虛擬主機。請注意,「Base URL」欄位必須包含通訊協定 (亦即在欄位值前面加上「http://」或「https://」)。

    此外,請注意下列事項:

    • 可建立的虛擬主機數量沒有上限
    • TLS 是選用項目,可能是 1.0、1.1 或 1.2 版本
    • 可以設定虛擬主機的通訊埠
  6. 按一下「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

在此情況下:

  • httphttps:如果虛擬主機設為支援傳輸層安全標準 (TLS),請使用 HTTPS。如果虛擬主機不支援 TLS,請使用 HTTP。
  • routerIPport 是虛擬主機的 IP 位址和通訊埠號碼。
  • 您建立 API Proxy 時,系統會定義 proxy-base-pathresource-path

一般來說,您不會將 API 發布給具有 IP 位址和通訊埠編號的客戶。請改為為路由器和通訊埠定義 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 通訊協定的虛擬主機,請執行下列步驟:

  1. 使用 Create a Virtual Host API 建立虛擬主機,其中 ms-IP 是管理伺服器節點的 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
    
  2. 為與主機別名相符的虛擬主機建立 DNS 記錄。
  3. 如果您有現有的 API Proxy,請將虛擬主機新增至 Proxy 端點的 <HTTPConnection> 元素。系統會自動將虛擬主機新增至所有新的 API Proxy。 請參閱 設定 API Proxy 以使用虛擬主機

修改虛擬主機

如要修改虛擬主機,請執行下列步驟:

  1. 使用 更新虛擬主機 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
  2. 僅適用於 Edge for Private Cloud 4.16.01 和 4.16.05 版:如果您要修改現有的虛擬主機,而且在不變更通訊埠編號的情況下啟用 TLS 或停用 TLS,則:
    1. 停止路由器:

      /opt/apigee/apigee-service/bin/apigee-service edge-router stop
    2. 刪除 /opt/nginx/conf.d 中的任何檔案:

      rm -f /opt/nginx/conf.d/*
    3. 啟動路由器:

      /opt/apigee/apigee-service/bin/apigee-service edge-router start
    4. 針對所有路由器重複以上步驟。