設定虛擬主機

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

擁有付費帳戶的 Cloud 客戶,以及所有 Private Cloud 客戶適用的 Edge 可以在機構中建立虛擬主機。該使用者 建立虛擬主機的對象須為機構管理員, 具備修改虛擬主機權限的自訂角色。其他角色的使用者沒有 具備建立虛擬主機的授權。

觀看虛擬主辦人的簡介影片。

建立虛擬主機

請按照下列基本程序建立虛擬主機。 實際使用的程序取決於您是 Cloud 還是 Private Cloud 客戶 以及是否要啟用 TLS:

  1. 為公開的網域建立 DNS 項目和 CNAME 記錄。
  2. 如果是在虛擬主機上啟用 TLS:
    1. 使用本文所述的程序建立及設定 KeyStore: Keystores 和 Truststore
    2. 將憑證和金鑰上傳至 KeyStore。請確定 憑證符合您要用於虛擬主機的主機別名。
    3. 使用 Edge UI 或 API 建立 KeyStore 參照。參考資料 將 KeyStore 名稱和參照類型指定為 KeyStore。詳情請見 使用參考資料, ,進一步瞭解如何建立及修改參照。
    4. 如果您執行雙向傳輸層安全標準 (TLS),請建立信任存放區、上傳憑證 並建立信任儲存庫的參照使用描述的程序建立信任儲存庫 此處:Keystores 和 Truststores
  3. 使用 建立 Virtual Host API。如果啟用 TLS,請務必指定正確的 KeyStore 參照。 信任存放區參考資料和金鑰別名
  4. 如果您目前有任何 API Proxy,請將虛擬主機新增至 ProxyEndpoint。 系統會自動將虛擬主機新增至所有新的 API Proxy。詳情請見 設定 API Proxy 以使用虛擬主機

更新 API Proxy 以使用虛擬主機後,建立 DNS 項目和 CNAME 記錄中,您就可以使用 API Proxy,如下所示:

https://api.myCompany.com/v1/project-base-path/resource-path

例如:

https://api.myCompany.com/v1/weather/forecastrss?w=12797282

使用 API 或 UI 建立虛擬主機

您可以使用 Edge API 或 Edge UI 建立虛擬主機。

以下範例大多使用 Edge API。存取 UI 以建立、修改和刪除 Edge UI 中的虛擬主機:

  1. 登入 apigee.com/edge

    私有雲客戶的 Edge 會使用 http://ms-ip:9000 (地端部署),其中 ms-ip 是 Management Server 節點的 IP 位址或 DNS 名稱。

  2. 在左側導覽列中依序選取「Admin」>「Virtual Hosts」
  3. 選取環境,例如「prod」或「test」
    虛擬 就會顯示專為環境定義的主機。
  4. 選取「+ 虛擬主機」來建立虛擬主機,或是選取 編輯現有虛擬主機。

建立用於 HTTP 的虛擬主機

Edge for Private Cloud 客戶可以使用 HTTP 建立虛擬主機。

如要建立不支援 TLS 的虛擬主機,請建立 XML 物件以定義 虛擬主機舉例來說,下列 XML 物件定義了使用 HTTP 通訊協定:

<VirtualHost name="myVHost">
   <HostAliases>
     <HostAlias>api.myCompany.com</HostAlias>
   </HostAliases>
   <Interfaces/>
   <Port>80</Port>
</VirtualHost>

在這個定義中,您:

  • 名稱指定為 myVHost。使用名稱做為參照 API Proxy 或 API 呼叫中的虛擬主機。
  • 將「主機別名」設為 api.myCompany.com。這是 用來存取您 API 的公開網域 (由 DNS 定義和 CNAME 定義) 。
  • port 編號指定為 80。如果省略此值,系統會依預設 通訊埠設為 443
  • 虛擬主機中還可以設定其他屬性。 如需所有屬性的參考資料,請參閱 虛擬主機屬性參考資料

如果目前已有 API Proxy,請將虛擬主機新增至 <HTTPConnection> 元素 存取 Proxy 端點系統會自動將虛擬主機新增至所有新的 API Proxy。 請參閱設定 API Proxy 以使用虛擬主機。 如果您建立了不應透過特定虛擬主機存取的新 API Proxy, 接著,您必須編輯 API Proxy,將該虛擬主機從其 ProxyEndpoint 中移除。

接著,您可以提出要求,透過這個虛擬主機存取 API Proxy:

http://api.myCompany.com/proxy-base-path/resource-path
https://api.myCompany.com/proxy-base-path/resource-path

使用 建立 Virtual Host API:

curl -X POST -H "Content-Type:application/xml" \
  http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \
  -d '<VirtualHost name="myVHost">
        <HostAliases>
            <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>80</Port>
    </VirtualHost>' \
  -u sysAdminEmail:password
敬上

建立單向 TLS 的虛擬主機

以下 XML 物件會定義單向 TLS 的虛擬主機:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

在此定義中,您會設定 <Enable> 元素來啟用 TLS 設為 true,並使用 <KeyStore><KeyAliase> 元素 指定 TLS 連線使用的 KeyStore 和金鑰別名。

詳情請參閱 TLS/SSL 深入瞭解如何使用 TLS

決定如何在虛擬主機中指定 KeyStore 和信任儲存庫名稱

將虛擬主機設為支援 TLS 時,您必須使用 reference:參照是包含 KeyStore 名稱或 而不要直接指定 KeyStore 或信任儲存庫名稱,如下所示:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>

使用參照的好處是,您可以變更參考檔案的值來變更 因為目前 KeyStore 中的憑證 有幾項要求如要變更參照的值,則不必重新啟動。 以及邊緣路由器如需相關資訊,請參閱使用參考資料一文 ,進一步瞭解如何建立及修改參照。

您只能使用 KeyStore 和信任儲存庫的參照。您無法在 別名。變更 KeyStore 的參照時,請確認憑證的別名名稱是 與舊的 KeyStore 一樣

使用 KeyStore 和信任儲存庫的參照限制

使用 KeyStore 和 信任儲存庫:

  • 只有在支援 SNI 和 您將在 Apigee 路由器上終止 SSL
  • 如果在 Apigee 路由器的前方設有負載平衡器,且您在 就無法在虛擬主機中使用 KeyStore 和信任儲存庫參照。

建立雙向 TLS 的虛擬主機

如要啟用雙向 TLS,請將 <ClientAuthEnabled> 元素設為 true,然後將 藉由搭配 <TrustStore> 元素的參照使用。信任儲存庫 保存用戶端憑證核發者和憑證的 CA 鏈結 (這是必要的)。用戶端 您還需要為雙向傳輸層安全標準 (TLS) 正確設定

如要建立雙向傳輸層安全標準 (TLS) 的虛擬主機,請建立 XML 物件來定義 主機:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <TrustStore>ref://myTestTruststoreRef</TrustStore>
    </SSLInfo>
</VirtualHost>

在這個定義中,您:

  • <ClientAuthEnabled> 設為 true,即可啟用雙向 TLS。
  • 使用 <TrustStore> 元素指定信任儲存庫的參照。信任儲存庫 保存用戶端憑證核發者和憑證的 CA 鏈結 (這是必要的)。

詳情請參閱 TLS/SSL 深入瞭解如何使用 TLS

修改虛擬主機

擁有付費帳戶的 Cloud 客戶,所有 Edge for Private Cloud 客戶都能使用 更新 Virtual Host API 以更新虛擬主機。這個 API 可讓您設定 「虛擬主機屬性參考資料」所述,為虛擬主機設定屬性。

使用 更新虛擬主機 更新 Virtual Host API。使用 API 時,您必須指定 要求主體中的虛擬主機,而不只是您要變更的元素。

在這個範例中,您將設定 proxy_read_timeout 屬性的值:

curl -X PUT -H "Content-Type:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \
    -d '<VirtualHost  name="myTLSVHost">
         <HostAliases>
           <HostAlias>api.myCompany.com</HostAlias>
         </HostAliases>
         <Port>443</Port>
         <SSLInfo>
           <Enabled>true</Enabled>
           <ClientAuthEnabled>false</ClientAuthEnabled>
           <KeyStore>ref://myTestKeystoreRef</KeyStore>
           <KeyAlias>myKeyAlias</KeyAlias>
         </SSLInfo>
         <Properties>
           <Property name="proxy_read_timeout">50</Property>
         </Properties>
     </VirtualHost>' \
    -u orgAdminEmail:password

刪除虛擬主機

從環境中刪除虛擬主機前,您必須先更新 參照虛擬主機來移除參照。詳情請見 設定 API Proxy 使用虛擬伺服器 <主機>)。

如要刪除虛擬主機,請使用 刪除 Virtual Host API:

curl -X DELETE \
  https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/virtualhosts/vhost_name \
  -u orgAdminEmail:password

查看虛擬主機的相關資訊

查看環境中定義的虛擬主機相關資訊,如下所述。

邊緣

如要使用 Edge UI 查看虛擬主機的相關資訊,請按照下列步驟操作:

  1. 登入 apigee.com/edge

    私有雲客戶的 Edge 會使用 http://ms-ip:9000 (地端部署),其中 ms-ip 是 Management Server 節點的 IP 位址或 DNS 名稱。

  2. 依序選取「管理員」>虛擬主機
  3. 選取環境,例如「prod」或「test」

    虛擬 就會顯示為環境定義的主機。如果虛擬主機設為使用 KeyStore 或信任存放區, 按一下「顯示」即可查看詳細資訊。

如果虛擬主機設為使用 TLS/SSL,設定檔名稱旁會顯示一個鎖頭圖示 虛擬主機這表示 TLS/SSL 憑證、金鑰和憑證鏈結已上傳到 且與虛擬主機相關聯。如要查看可用儲存空間的 憑證:

  1. 依序選取「管理員」>環境 >左側導覽列中的 TLS KeyStore。
  2. 選取環境 (通常是 prodtest)。
  3. 展開 KeyStore 即可查看憑證。

傳統版 Edge (Private Cloud)

如何使用傳統版 Edge UI 查看虛擬主機的資訊:

  1. 登入「http://ms-ip:9000」(ms-ip 為以下應用程式) Management Server 節點的 IP 位址或 DNS 名稱。
  2. 依序選取「管理員」>虛擬主機
  3. 選取環境,例如「prod」或「test」
  4. 按一下「Virtual Hosts」分頁標籤。

    虛擬 就會顯示為環境定義的主機。如果虛擬主機設為使用 KeyStore 或信任存放區, 按一下「顯示」即可查看詳細資訊。

    「Virtual Hosts」分頁會顯示名稱、通訊埠和
                 別名等。

如果虛擬主機設為使用 TLS/SSL,設定檔名稱旁會顯示一個鎖頭圖示 虛擬主機這表示 TLS/SSL 憑證、金鑰和憑證鏈結已上傳到 且與虛擬主機相關聯。如要查看可用儲存空間的 憑證:

  1. 依序選取「管理員」>
  2. 選取環境 (通常是 prodtest)。
  3. 展開 KeyStore 即可查看憑證。

檢視 具備 Edge API 的虛擬主機

您也可以使用 Edge API 查看虛擬主機的相關資訊。適用對象 例如 List Virtual Hosts API 會傳回所有虛擬主機的清單:

curl -X GET -H "accept:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/environments/env_name/virtualhosts \
    -u orgAdminEmail:pWord

其中 orgAdminEmail:pWord 是機構管理員的使用者名稱和密碼 org_name/env_name 則指定 機構和包含虛擬主機的環境回應範例:

[
 "default",
 "secure"
]

如要查看特定虛擬主機的相關資訊,請使用 取得虛擬主機 API:

curl -X GET -H "accept:application/xml" \
    https://api.enterprise.apigee.com/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \
    -u orgAdminEmail:pWord

其中 vhost_name 是 虛擬主機舉例來說,您可以將 vhost_name 指定為「安全」到 查看 Apigee 建立的預設安全虛擬主機設定:

<VirtualHost name="secure">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <Properties/>
    <Interfaces/>
    <RetryOptions/>
    <SSLInfo>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <Enabled>true</Enabled>
        <KeyAlias>freetrial</KeyAlias>
        <KeyStore>ref://freetrial</KeyStore>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
    </SSLInfo>
</VirtualHost>
敬上

設定 API Proxy 以使用 主辦方

建立新的 API Proxy 時,Edge 會自動設為使用所有可用的虛擬伺服器 一組主機透過虛擬主機向 API Proxy 發出的要求會使用以下格式:

https://host-alias/proxy-base-path/resource-path

在此情況下:

  • host-alias 通常是虛擬主機的 DNS 名稱。
  • proxy-base-path 是在建立 API Proxy 時定義,且每個 Proxy 都有專屬的 並存取 API Proxy
  • resource-path:可透過 API Proxy 存取的資源路徑。

控制 API Proxy 使用的虛擬主機

在 API Proxy 的 XML 設定中,請使用 virtualhost 標記指定 與 API Proxy 相關聯的虛擬主機 name

<HTTPProxyConnection>
  <BasePath>/v1/my/proxy/basepath</BasePath>
  <VirtualHost>secure</VirtualHost>
  <VirtualHost>default</VirtualHost>
</HTTPProxyConnection>

例如,<VirtualHost>secure</VirtualHost> 表示 用戶端可以使用「secure」(安全) 的主機別名,虛擬主機

在下列情況下,通常會修改與 API Proxy 相關聯的虛擬主機:

  • 建立新的虛擬主機,並有 API Proxy。您必須編輯任何現有的 API 新增虛擬主機的 Proxy。
  • 建立新的 API Proxy,且不應透過特定虛擬主機存取。 您必須編輯 API Proxy,才能從定義中移除該虛擬主機。

如要修改與 API Proxy 相關聯的虛擬主機,請按照下列步驟操作:

  1. 按照以下說明存取 API Proxy 編輯器。

    Edge

    如何使用 Edge UI 存取 API Proxy 編輯器:

    1. 登入 apigee.com/edge

      私有雲客戶的 Edge 會使用 http://ms-ip:9000 (地端部署),其中 ms-ip 是 Management Server 節點的 IP 位址或 DNS 名稱。

    2. 依序選取「開發」>「開發」API Proxy
    3. 在清單中選取要編輯的 API Proxy。

    傳統版 Edge (Private Cloud)

    如何使用傳統版 Edge UI 存取 API Proxy 編輯器:

    1. 登入「http://ms-ip:9000」(ms-ip 為以下應用程式) Management Server 節點的 IP 位址或 DNS 名稱。
    2. 選取「API」>頂端導覽列中的 API Proxy
    3. 在清單中選取要編輯的 API Proxy。
  2. 按一下「開發」分頁標籤。
  3. 在「Proxy Endpoints」下方,選取「default」
  4. 在程式碼區域中:
    1. 移除以下項目的所有 <VirtualHost> 元素: API Proxy 不支援的虛擬主機。
    2. 新增 <VirtualHost> 元素 與新虛擬主機的名稱相同舉例來說,如果新的虛擬主機已命名為 MyVirtualHost 中新增以下標記:
      <HTTPProxyConnection>
        <BasePath>/v1/my/proxy/basepath</BasePath>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
        <VirtualHost>MyVirtualHost</VirtualHost>
      </HTTPProxyConnection>
  5. 儲存 API Proxy。如果 API Proxy 已部署完畢,儲存 Proxy 就會使用新的 以及環境敘述

設定 API Proxy 的 Edge UI

Edge UI 會根據虛擬主機的設定顯示 API Proxy 的網址 與部署 Proxy 的部署位置相對應這個顯示器可能包含路由器通訊埠編號 虛擬主機

在大多數情況下,Edge UI 中顯示的網址是將外部的正確網址 向 Proxy 發出要求不過,部分設定顯示的網址並不正確。適用對象 例如下列任一設定可能導致不顯示 對應至用來向 Proxy 提出外部要求的實際網址:

  • 在負載平衡器上進行 SSL 終止
  • 負載平衡器與 Apigee 路由器之間進行通訊埠對應
  • 已設定路徑重寫功能的負載平衡器

Edge 支援虛擬主機上名為 <BaseUrl> 的屬性,以便 可覆寫 Edge UI 顯示的網址以下範例顯示虛擬主機物件 與 <BaseUrl> 屬性相同。 在此範例中,值為「http://myCo.com」會出現於 Edge UI 中:

<VirtualHost name="myTLSVHost">
  <HostAliases>
    <HostAlias>api.myCompany.com</HostAlias>
  </HostAliases>
  <BaseUrl>http://myCo.com</BaseUrl>
  <Port>443</Port>
  <SSLInfo>
    <Enabled>true</Enabled>
    <ClientAuthEnabled>false</ClientAuthEnabled>
    <KeyStore>ref://myTestKeystoreRef</KeyStore>
    <KeyAlias>myKeyAlias</KeyAlias>
  </SSLInfo>
</VirtualHost>

請注意,<BaseUrl> 的值必須包含通訊協定 (例如「http://」或 「https://」)。

如未設定 <BaseUrl>,則 Edge UI 轉譯的預設網址將會 會顯示為「api.myCompany.com」,但實際的主機別名則是「http://myCo.com」。