設定私有雲的虛擬主機

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

如果是地端部署,您可以完全控管虛擬主機。您可以為任何機構和環境建立虛擬主機,無論是否使用 TLS。

本文說明如何建立簡單的虛擬主機。也就是不支援傳輸層安全標準 (TLS) 的伺服器。如需更多範例,包括建立支援 TLS 的虛擬主機範例,請參閱「為私有雲的 API 設定 TLS 存取權」。

瞭解詳情

關於主機別名

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

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

    在這份表單中,您要指定 Router 的 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 for Private Cloud 4.16.01 以上版本的虛擬主機通訊埠

建立虛擬主機時,請指定虛擬主機使用的 Router 連接埠。例如通訊埠 9001。

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

建立虛擬主機

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

您可以使用 API 或 Edge UI,為 Apigee Edge for Private Cloud 建立虛擬主機。以下各節將說明這些項目。

使用瀏覽器建立虛擬主機

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

如要在 Edge UI 中建立新的虛擬主機,請按照下列步驟操作:

  1. 登入 Edge 管理 UI。
  2. 依序選取「管理」>「虛擬主機」
  3. 從下拉式清單中選取環境。

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

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

    Edge 會顯示「建立虛擬主機」表單。

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

  5. 定義新的虛擬主機。請注意,「基本網址」欄位必須包含通訊協定 (也就是在欄位值前面加上「http://」或「https://」)。

    此外,請注意下列事項:

    • 可建立的虛擬主機數量沒有上限
    • 傳輸層安全標準 (TLS) 為選用功能,可使用 1.0、1.1 或 1.2 版
    • 虛擬主機的通訊埠可設定
  6. 按一下「建立」按鈕,即可儲存新的虛擬主機。

使用 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. 使用「建立虛擬主機」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. 使用「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
  2. 僅適用於 Edge for Private Cloud 4.16.01 和 4.16.05 版:如果您修改現有的虛擬主機,並啟用或停用 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. 針對所有路由器重複上述步驟。