設定私有雲的虛擬主機

您正在查看 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 中建立新的虛擬主機:

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

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

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

    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

一般來說,您不會使用 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 通訊協定的虛擬主機,請執行下列步驟:

  1. 使用建立虛擬主機 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
    
  2. 為與主機別名相符的虛擬主機建立 DNS 記錄。
  3. 如果目前已有 API Proxy,請將虛擬主機新增至 Proxy 端點的 <HTTPConnection> 元素。系統會自動將虛擬主機新增至所有新的 API 代理程式。請參閱「 設定 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. 對所有路由器重複以上步驟。