您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
在 Edge 中,路由器會處理所有連入的 API 流量。也就是說,所有傳送至 API Proxy 的 HTTP 和 HTTPS 要求,都會先由 Edge Router 處理。
虛擬主機可讓您在伺服器上託管多個網域名稱。 如果是 Edge,伺服器對應的是 Edge 路由器。在 Router 上定義多個虛擬主機後,Router 就能處理對多個網域名稱的 API 要求。
Edge 上的虛擬主機會定義存取通訊協定 (HTTP 或 HTTPS)、開放的路由器通訊埠和主機別名。主機別名通常是 DNS 網域名稱,會對應至路由器的 IP 位址。
舉例來說,下圖顯示具有兩個虛擬主機定義的 Router:

第一個虛擬主機會處理網域 domainName1 的 HTTPS 要求,第二個則會處理 domainName2 的 HTTP 要求。
當要求傳送至 API Proxy 時,路由器會比較傳入要求的 Host 標頭與所有虛擬主機定義的主機別名清單,判斷由哪個虛擬主機處理要求。
虛擬主機定義簡介
虛擬主機包含下列資訊:
- 虛擬主機的內部名稱。您可以使用該名稱參照 API Proxy 中的虛擬主機,以及設定虛擬主機。
- 虛擬主機的主機別名。通常主機別名是 DNS 網域名稱,會對應至路由器上的 IP 位址。API Proxy 要求的
Host標頭必須包含虛擬主機的主機別名。 - 路由器上的開放通訊埠。
- 是否啟用 TLS (HTTPS 存取),或未啟用 (HTTP 存取)。
舉例來說,建立虛擬主機時,您會指定下列資訊:
- name = myvhost
- 主機別名 = apis.acme.com
- port = 443
- 已啟用 TLS
根據虛擬主機的上述設定,對 API Proxy 的要求會採用下列格式:
https://apis.acme.com/{proxy-base-path}/{resource-path}其中:
- {proxy-base-path} 是您建立 API Proxy 時定義的,且每個 API Proxy 都有專屬的。
例如:
https://apis.acme.com/characters
- {resource-path} 可透過 API Proxy 存取的資源路徑。例如:
https://apis.acme.com/characters/coyote https://apis.acme.com/characters/roadrunner
關於 Edge for Cloud 中的虛擬主機
每個 Edge 機構都會自動包含兩個環境 (test 和 prod)、每個環境中的兩個虛擬主機 (default 和 secure),以及每個主機別名的 DNS 記錄。
每個 Apigee 提供的虛擬主機別名都包含機構和環境的名稱,如下表所示:
| 環境 | 虛擬主機名稱 | 主機別名 | 通訊埠 | 已啟用 TLS |
|---|---|---|---|---|
| prod | 預設 | {org-name}-prod.apigee.net |
80 | 否 |
| 安全 | {org-name}-prod.apigee.net |
443 | 是 | |
| 測試 | 預設 | {org-name}-test.apigee.net |
80 | 否 |
| 安全 | {org-name}-test.apigee.net |
443 | 是 |
舉例來說,在 prod 環境中,名為「myorg」的機構預設網域名稱為「myorg-prod.apigee.net」。因此,如要存取該機構中的 API Proxy,請使用下列格式的網址:
http://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}
https://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}Apigee 付費方案:含有「apigee.net」的網域名稱可能不是您想向客戶公開的內容。您可以使用 DNS 項目和 CNAME 記錄,將網域名稱對應至 Edge 上的機構。您也必須建立虛擬主機,並將主機別名設為該網域名稱。開發人員可透過貴公司專屬網域存取 API。
以下是 Edge 中的自訂網域範例:
https://apis.acme.com/{proxy-base-path}/{resource-path}關於 Edge for Private Cloud 的虛擬主機
安裝 Apigee Edge for Private Cloud 時,系統不會為您建立預設機構、環境或虛擬主機。完成 Edge 安裝程序後,通常會先透過「新手上路」程序建立機構、環境和虛擬主機。
如要執行上線程序,請在 Edge Management Server 節點上執行下列指令:
/opt/apigee/apigee-service/bin/apigee-service apigee-provision setup-org -f configFile
其中 configFile 包含建立使用者、機構、環境和虛擬主機所需的資訊。
舉例來說,您可以建立:
- 您選擇的使用者,可擔任機構管理員
- 名為「
example」的機構 - 機構中名為「
prod」的環境 - 環境中名為
default的虛擬主機,允許通訊埠 9001 上的 HTTP 存取 - 用來存取路由器的 DNS 名稱主機別名,或是路由器 IP 位址和虛擬主機的通訊埠,格式為
IP:9001。
您稍後可以將任意數量的機構、環境和虛擬主機新增至 Edge 的地端部署版本。如需詳細資訊,請參閱:
虛擬主機在 Edge 路由器上開啟。因此,您必須確保在路由器上開啟為虛擬主機指定的通訊埠。您可以使用下列格式的指令開啟通訊埠:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT --verbose
執行該指令後,您可以使用下列格式的網址存取 API:
http://<router-ip>:9001/{proxy-base-path}/{resource-path}一般來說,您不會將 API 發布給客戶,並提供 IP 位址和通訊埠號碼。而是為路由器和通訊埠定義 DNS 項目。例如:
http://myAPI.myCo.com/{proxy-base-path}/{resource-path}定義 DNS 項目時,您也必須建立虛擬主機,並使用與 DNS 項目網域名稱相符的主機別名。以上述範例來說,建立虛擬主機時,您會指定 myAPI.myCo.com 的主機別名。
關於主機別名和 DNS 名稱
您為虛擬主機設定的其中一個屬性是「主機別名」。主機別名通常是虛擬主機的 DNS 名稱。設定主機別名的方式取決於 Edge 安裝類型:Cloud 或 Private Cloud。
Edge for the Cloud 中的主機別名和 DNS 名稱
在 Edge for the Cloud 中,首次建立 Edge 機構時,Apigee 會自動建立兩個環境 (test 和 prod)、每個環境中的兩個虛擬主機 (default 和 secure),以及每個虛擬主機的 DNS 記錄。
虛擬主機的別名包含機構和環境的名稱。 因此,透過虛擬主機提出的要求格式如下:
http://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}https://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}http://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}https://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}
通常,您會想建立使用網域名稱的虛擬主機,而不是使用預設的 apigee.net 網域。如要這麼做,請先建立自己的 DNS 項目和 CNAME 記錄。
下圖顯示 Edge 處理 API 要求的典型設定:

在這個例子中:
- api.acme.com 是您要使用的網域名稱。
- 您定義 DNS 項目和 CNAME 記錄,將 api.acme.com 指向 acme-prod.apigee.net。
- 要求包含
Host標頭,路由器會使用這個標頭判斷處理要求的虛擬主機。
在本範例中,您會在虛擬主機定義中指定下列資訊:
- name = myvhost
- 主機別名 = apis.acme.com
- port = 443
- 啟用 TLS 存取權
詳情請參閱「設定雲端的虛擬主機」。
Edge for Private Cloud 中的主機別名和 DNS 名稱
與 Edge for the Cloud 相同,您會建立使用自有網域名稱做為主機別名的虛擬主機。接著,您會建立自己的 DNS 項目和 CNAME 記錄,以存取這些虛擬主機。
Cloud 和 Private Cloud 的差異之一,在於 Cloud Apigee 會自動為機構建立 DNS 名稱,格式如下:
- name=default:
http://{org-name}-{env-name}.apigee.net(路由器連接埠 80) - name=secure:
https://{org-name}-{env-name}.apigee.net(路由器通訊埠 443)
在 Private Cloud 的 Edge 中,您必須建立 DNS 項目,指向 Router 的 IP 位址和連接埠。
舉例來說,您可以在虛擬主機定義中指定這項資訊:
- name = myvhost
- 主機別名 = apis.acme.com
- port = 9001
- 啟用 TLS 存取權
下圖顯示 Edge 處理 API 要求的典型設定:

在這個例子中:
- api.acme.com 是您要使用的網域名稱。
- 您定義 DNS 項目和 CNAME 記錄,將 api.acme.com 指向 Router 的 IP 位址和通訊埠。
- 要求包含
Host標頭,路由器會使用這個標頭判斷處理要求的虛擬主機。
詳情請參閱「設定 Private Cloud 的虛擬主機」。
主機別名和萬用字元
您可以在主機別名中加入「*」萬用字元。「*」萬用字元只能位於主機別名的開頭 (第一個「.」之前),且不得與其他字元混用。
以下是使用萬用字元的有效主機別名範例:
*.example.com
下列範例無效:
www.*.example.com w*.example.com
在虛擬主機別名中使用萬用字元,可讓 API Proxy 處理傳送至多個子網域的呼叫,例如 alpha.example.com、beta.example.com 或 live.example.com。使用萬用字元別名也有助於減少每個環境使用的虛擬主機數量,以符合產品限制,因為含有萬用字元的虛擬主機只會計為一個虛擬主機。
虛擬主機的 TLS 憑證必須在憑證的 CN 名稱中含有相符的萬用字元。
例如 *.example.com。
關於虛擬主機資源
在 Edge 中,虛擬主機是以 XML 物件表示。舉例來說,下列 XML 物件定義了虛擬主機:
<VirtualHost name="vhostName">
<HostAliases>
<HostAlias>hostAlias</HostAlias>
</HostAliases>
<Interfaces>
<!-- Private Cloud only -->
<Interface>interfaceName</Interface>
<Port>portNumber</Port>
<BaseURL>http://myCo.com<</BaseUrl>
<OCSPStapling>off</OCSPStapling>
<RetryOptions/>
<SSLInfo>
<Enabled>trueFalse</Enabled>
<ClientAuthEnabled>trueFalse</ClientAuthEnabled>
<KeyStore>ref://keystoreRef</KeyStore>
<KeyAlias>keyAlias</KeyAlias>
<TrustStore>ref://truststoreRef</TrustStore>
<IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
</SSLInfo>
<Properties>
<Property name="proxy_read_timeout">timeout</Property>
<Property name="keepalive_timeout">timeout</Property>
<Property name="proxy_request_buffering">onOff</Property>
<Property name="proxy_buffering">onOff</Property>
<Property name="ssl_protocols">protocolList</Property>
<Property name="ssl_ciphers">cipherList</Property>
</Properties>
</VirtualHost>可設定的屬性清單取決於您使用的是 Edge for the Cloud 或 Edge for the Private Cloud。如果您使用 Edge for Private Cloud,可用屬性清單也會因 Edge 版本而異。如需虛擬主機所有屬性的完整說明,請參閱虛擬主機屬性參考資料。
如要進一步瞭解如何為特定 Edge 版本建立虛擬主機,請參閱: