您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
在 Edge 中,Router 會處理所有傳入的 API 流量。這表示傳送至 API Proxy 的所有 HTTP 和 HTTPS 要求會先由 Edge Router 處理。
虛擬主機可讓您在伺服器上代管多個網域名稱。Edge 的伺服器會對應至 Edge Router。在路由器上定義多個虛擬主機後,路由器就能處理傳送至多個網域名稱的 API 要求。
Edge 上的虛擬主機會定義存取通訊協定 (HTTP 或 HTTPS)、開放式路由器通訊埠和主機別名。主機別名通常是對應至路由器 IP 位址的 DNS 網域名稱。
舉例來說,下圖顯示具有兩個虛擬主機定義的路由器:
第一個虛擬主機會處理 domainName1 網域的 HTTPS 要求,第二個虛擬主機則處理 domainName2 上的 HTTP 要求。
向 API Proxy 發出要求時,路由器會將傳入要求的 Host
標頭與所有虛擬主機定義的主機別名清單進行比對,以判斷由哪個虛擬主機處理要求。
關於虛擬主機定義
虛擬主機包含以下資訊:
- 虛擬主機的內部名稱。您在 API Proxy 和設定虛擬主機時,會使用這個名稱來參照虛擬主機。
- 虛擬主機的「主機別名」。主機別名通常是對應至路由器上的 IP 位址的 DNS 網域名稱。API Proxy 要求的
Host
標頭必須包含虛擬主機的主機別名。 - 路由器上的開啟通訊埠。
- 是否啟用 TLS (HTTPS 存取) (HTTP 存取)。
舉例來說,您會在建立虛擬主機時指定下列資訊:
- 名稱 = myvhost
- 主機別名 = apis.acme.com
- 通訊埠 = 443
- TLS 已啟用
根據上方的虛擬主機設定,對 API Proxy 發出的要求會使用下列格式:
https://apis.acme.com/{proxy-base-path}/{resource-path}
其中:
- 建立 API Proxy 時,系統會定義 {proxy-base-path},且每個 API Proxy 都有專屬 ID。
例如:
https://apis.acme.com/characters
- {resource-path} 可透過 API Proxy 存取資源的路徑。例如:
https://apis.acme.com/characters/coyote https://apis.acme.com/characters/roadrunner
關於 Edge for the Cloud 中的虛擬主機
每個邊緣機構會自動包含兩個環境 (test
和 prod
)、每個環境中有兩個虛擬主機 (預設和安全),以及每個主機別名的 DNS 記錄。
每個 Apigee 提供的虛擬主機的主機別名都包含機構和環境的名稱,如下表所示:
環境 | 虛擬主機名稱 | 主機別名 | 連接埠 | 已啟用 TLS |
---|---|---|---|---|
正式環境 | 預設 | {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 中的虛擬主機
安裝 Private Cloud 適用的 Apigee Edge 時,系統不會為您建立預設機構、環境或虛擬主機。完成 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 版本中新增任意數量的機構、環境和虛擬主機。詳情請參閱:
虛擬主機已在邊緣路由器上開啟。因此,您必須確保您為虛擬主機指定的通訊埠在路由器上處於開啟狀態。您可以使用以下表單中的指令開啟通訊埠:
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 Edge 中的主機別名和 DNS 名稱
在 Edge for Cloud 中,當您首次建立 Edge 機構時,Apigee 會自動建立兩個環境 (test
和 prod
)、每個環境中兩個虛擬主機 (預設和安全),以及每個虛擬主機的 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
標頭,讓路由器用來判斷處理要求的虛擬主機。
在這個範例中,您會在虛擬主機定義中指定下列資訊:
- 名稱 = myvhost
- 主機別名 = apis.acme.com
- 通訊埠 = 443
- 啟用 TLS 存取權
詳情請參閱「設定雲端的虛擬主機」。
私有雲的 Edge 中的主機別名和 DNS 名稱
和 Cloud Edge 一樣,您會建立虛擬主機,並在主機別名中使用您自己的網域名稱。然後,您建立自己的 DNS 項目和 CNAME 記錄來存取這些虛擬主機。
Cloud Apigee 與私有雲之間的差異之一,就是在 Cloud Apigee 中,自動為您的機構建立 DNS 名稱,形式如下:
- name=default:
http://{org-name}-{env-name}.apigee.net
(路由器通訊埠 80) - name=secure:
https://{org-name}-{env-name}.apigee.net
(路由器通訊埠 443)
在私有雲的邊緣中,您必須建立路由器的 IP 位址和通訊埠 DNS 項目。
舉例來說,您可以在虛擬主機定義中指定這項資訊:
- 名稱 = myvhost
- 主機別名 = apis.acme.com
- 通訊埠 = 9001
- 啟用 TLS 存取權
下圖顯示 Edge 處理 API 要求的典型設定:
在這個例子中:
- api.acme.com 是所需的網域名稱。
- 您定義一個 DNS 項目和 CNAME 記錄,將 api.acme.com 指向路由器的 IP 位址和通訊埠。
- 要求中包含
Host
標頭,讓路由器用來判斷處理要求的虛擬主機。
詳情請參閱「設定私有雲的虛擬主機」。
主機別名和萬用字元
您可以在主機別名中加入「*」萬用字元。「*」萬用字元只能放在主機別名的開頭 (「.」之前),且不能與其他字元混合。
以下是使用萬用字元的有效主機別名範例:
*.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 Cloud 或 Private Cloud 適用的 Edge。如果您使用 Edge 做為私有雲,可用屬性清單取決於您的 Edge 版本。如需虛擬主機所有屬性的完整說明,請參閱虛擬主機屬性參考資料。
如要進一步瞭解如何建立特定 Edge 版本的虛擬主機,請參閱: