虛擬主機屬性參考資料

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

虛擬主機表示法

用於定義虛擬主機的 XML 物件是以 Edge (雲端或私有雲) 版本為準。

如果您是 Private Cloud 客戶,請務必為 Edge 版本使用正確的 XML。

雲端和私有雲 4.17.01 以上版本

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <BaseUrl>http://myCo.com</BaseUrl>
    <OCSPStapling>offOn</OCSPStapling>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <!-- Private Cloud only -->
        <Interface>interfaceName</Interface>
    </Interfaces>
    <RetryOptions>
        <RetryOption>option</RetryOption>
    </RetryOptions>
    <ListenOptions>
        <ListenOption>option</ListenOption>
    </ListenOptions>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
    <!-- UseBuiltInFreeTrialCert is for Edge Cloud only -->
    <UseBuiltInFreeTrialCert>trueFalse</UseBuiltInFreeTrialCert>
    <PropagateTLSInformation>
        <!-- PropagateTLSInformation is Alpha in the Cloud only -->
        <ConnectionProperties>trueFalse</ConnectionProperties>
        <ClientProperties>trueFalse</ClientProperties>
    </PropagateTLSInformation>
    <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>
        <!-- ssl_protocols is Private Cloud only -->
        <Property name="ssl_protocols">protocolList</Property>
        <Property name="ssl_ciphers">cipherList</Property>
    </Properties>
</VirtualHost>

私有雲 4.16.01 至 4.16.09

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <Interface>interfaceName</Interface>
    </Interfaces>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
</VirtualHost>

私有雲 4.15.07 以下版本

<VirtualHost name="vhostName">
    <Port>portNumber</Port>
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <Interface>interfaceName</Interface>
    </Interfaces>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>keystore</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>truststore</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
        <Ciphers>
             <Cipher>cipher</Cipher>
             <Cipher>cipher</Cipher>
         </Ciphers>
         <Protocols>
             <Protocol>protocol</Protocol>
             <Protocol>protocol</Protocol>
         </Protocols>
    </SSLInfo>
</VirtualHost>

虛擬主機設定屬性

下表列出用於設定虛擬主機的屬性:

屬性 說明 預設 需要
VirtualHost

指定虛擬主機的名稱。設定 API Proxy 時,您必須使用該名稱來參照虛擬主機。

名稱屬性中可使用的字元僅限於 A-Z0-9._\-$%,

通訊埠

指定虛擬主機使用的通訊埠號碼。確認邊緣路由器上的通訊埠已開啟。

如果您在 hostalias 元素中指定通訊埠,<Port> 指定的通訊埠號碼必須與該通訊埠編號相符。

雲端:您在建立虛擬主機時,必須指定通訊埠 443。如果省略,通訊埠會預設為 443。如果現有虛擬主機使用 443 以外的通訊埠,您就無法變更該通訊埠。

針對私有雲版本 4.16.01 至 4.17.05:建立虛擬主機時,您需要指定虛擬主機使用的路由器通訊埠。例如通訊埠 9001。根據預設,路由器會以使用者「apigee」的形式執行,無法存取具有特殊權限的通訊埠,通常是 1024 以下版本的通訊埠。如要建立將路由器繫結至受保護的通訊埠的虛擬主機,您必須將路由器設為以具備這些通訊埠存取權的使用者的身分執行。詳情請參閱設定虛擬主機一文。

如為 4.16.01 版之前的私人 Cloud 版本:路由器只能監聽特定通訊埠上的每個虛擬主機一個 HTTPS 連線。因此,如果多個虛擬主機在指定通訊埠的路由器上發生傳輸層安全標準 (TLS) 終止作業,就無法使用相同的通訊埠編號。

BaseUrl 針對部署至虛擬主機的 API Proxy 覆寫 Edge UI 顯示的網址。當外部負載平衡器位於邊緣路由器前方,這項功能就相當實用。詳情請參閱「為私有雲的 API 設定 TLS 存取權」一文。

BaseUrl 的值必須包含通訊協定 (即「http://」或「https://」)。

OCSPStapling

OCSP (線上憑證狀態通訊協定) 用戶端會將狀態要求傳送至 OCSP 回應者,判斷 TLS 憑證是否有效。回應會指出 TLS 憑證是否有效且未撤銷。

啟用之後,OCSP 輕觸功能即可讓 Edge 做為單向傳輸層安全標準 (TLS) 的傳輸層安全標準 (TLS) 伺服器直接查詢 OCSP 回應器,然後快取回應。接著,Edge 會將此回應傳回至傳輸層安全標準 (TLS) 用戶端,或做為傳輸層安全標準 (TLS) 握手程序的一部分而加以「輕觸」。詳情請參閱「在伺服器上啟用 OCSP Stapling」。

必須啟用 TLS,才能啟用 OCSP 共用功能。如要啟用,請設為 on。預設值為 off

關閉
HostAliases
HostAlias

路由器上虛擬主機的公開 DNS 名稱,您可以視需要提供通訊埠編號。針對 Edge 安裝中的所有虛擬主機,虛擬主機的主機別名名稱和通訊埠編號組合不得重複。也就是說,如果虛擬主機使用不同的主機別名,就能使用相同的通訊埠編號。

您必須建立與主機別名相符的 DNS 項目和 CNAME 記錄,且主機別名必須與用戶端在 Host 標頭中傳入的字串相符。

HostAlias 中的通訊埠編號為選填項目。如果將通訊埠指定為主機別名的一部分,則必須使用 <Port> 元素指定相同的通訊埠。或者,您可以指定兩個 HostAlias 元素,一個有通訊埠編號,另一個則無。

同一個虛擬主機定義中可以有多個 HostAlias 定義,該定義對應至虛擬主機的多個 DNS 項目,但不適用於多個通訊埠。如果您需要多個通訊埠,可以用不同的通訊埠建立多個虛擬主機定義。

您可以在主機別名中加入「*」萬用字元。「*」萬用字元只能放在主機別名的開頭 (「.」之前),且不能與其他字元混合。例如 *.example.com。虛擬主機的 TLS 憑證必須在憑證的 CN 名稱中加入相符的萬用字元。例如:*.example.com。在虛擬主機別名中使用萬用字元,可讓 API Proxy 處理傳送至多個子網域 (例如 alpha.example.combeta.example.comlive.example.com) 的呼叫。使用萬用字元別名也有助於減少各環境的虛擬主機數量,避免超出產品限制,因為含有萬用字元的虛擬主機只會計為一個虛擬主機。

雲端:如果現有虛擬主機使用 443 以外的通訊埠,您就無法新增或移除主機別名。

私人雲端:如果您使用路由器的 IP 位址 (而非 DNS 項目) 設定主機別名,請為每個路由器另外新增主機別名,並指定各個路由器的 IP 位址和虛擬主機的通訊埠。

介面 僅適用於 Edge for Private Cloud。
介面

指定 port 要繫結的網路介面。如果您省略這個元素,系統會在所有介面上繫結通訊埠。

例如,如要指定只將通訊埠繫結至 en0:

<Interfaces>
  <Interface>en0</Interface>
</Interfaces>

執行「ifconfig -a」指令,判斷系統提供的介面。

所有介面
RetryOptions 適用於 Edge Cloud 和 Private Cloud 4.18.01 以上版本。
RetryOption

設定路由器在訊息處理器停止運作時如何回應這個虛擬主機。

您可以使用 <RetryOption> 指定多個值。有效值包括:

off 停用重試,虛擬主機會在提出要求時傳回失敗代碼。
http_599 (預設) 如果路由器收到訊息處理器發出的 HTTP 599 回應,則路由器會將要求轉送至下一個訊息處理器。

HTTP 599 是訊息處理器在關閉時產生的特殊回應代碼。訊息處理者會嘗試完成所有現有的要求,但對於任何新要求,訊息處理者都會以 HTTP 599 回應,通知路由器在下一個訊息處理器上重試要求。

error 如果與訊息處理器建立連線、傳送要求給訊息處理器或讀取回應標頭時發生錯誤,路由器會將要求轉送至下一個訊息處理器。
timeout 如果與訊息處理器建立連線、傳送要求給它,或從訊息處理器讀取回應標頭時發生逾時,路由器會將要求轉送至下一個訊息處理器。
invalid_header 如果訊息處理器傳回空白或無效的回應,路由器會將要求轉送至下一個訊息處理器。
http_XXX 如果訊息處理器傳回含有 HTTP 代碼 XXX 的回應,路由器會將要求轉送至下一個訊息處理器。

如果您指定多個值,路由器會使用邏輯 OR 合併這些值。

例如:

<RetryOptions>
  <RetryOption>http_599</RetryOption>
  <RetryOption>error</RetryOption>
  <RetryOption>timeout</RetryOption>
  <RetryOption>invalid_header</RetryOption>
</RetryOptions>
ListenOptions 適用於 Private Cloud 4.18.01 以上版本和 Edge Cloud,請向 Apigee Edge 支援團隊提出要求。
ListenOption

如果您在 TCP 傳遞傳遞模式下使用 ELB 來處理傳送至邊緣路由器的要求,路由器會將 ELB 的 IP 位址視為用戶端 IP,而非實際用戶端 IP。如果路由器需要實際的用戶端 IP,請在 ELB 上啟用 proxy_protocol,藉此在 TCP 封包中傳遞用戶端 IP。在路由器上,您還必須將虛擬主機上的 <ListenOption> 設為 proxy_protocol。由於 ELB 處於 TCP 直通模式,您通常會終止路由器上的傳輸層安全標準 (TLS)。因此,通常只有在將虛擬主機也設為使用傳輸層安全標準 (TLS) 時,才會將虛擬主機設為使用 proxy_protocol

<ListenOption> 的預設值為空白字串。

例如:

<ListenOptions>
  <ListenOption>proxy_protocol</ListenOption>
</ListenOptions>

如果之後想取消設定 <ListenOption>,請更新虛擬主機,並從更新中省略 <ListenOptions> 標記。

SSLInfo
已啟用

啟用單向 TLS/SSL。您必須定義包含憑證和私密金鑰的 KeyStore。

雲端:您必須具備由信任的實體 (例如 Symantec 或 VeriSign) 簽署的憑證。 您無法使用自行簽署的憑證,或是由自行簽署 CA 簽署的分葉憑證。

雲端:如果現有虛擬主機設定為使用 443 以外的通訊埠,則無法變更 TLS 設定。換句話說,您無法將 TLS 設定從「啟用」改為「停用」,也無法從停用改為啟用。

false
ClientAuthEnabled 啟用邊緣 (伺服器) 和應用程式 (用戶端) 之間的雙向傳輸層安全標準 (TLS)。啟用雙向傳輸層安全標準 (TLS) 會要求您在 Edge 上設定信任儲存庫,該存放區包含來自 TLS 用戶端的憑證。 false
KeyStore

Edge 上的 KeyStore 名稱。

Apigee 建議您使用參照來指定 KeyStore 名稱,以便變更 KeyStore,而無須重新啟動路由器。詳情請參閱「設定 TLS 的選項」。

如果啟用時為 true,則為是
KeyAlias 上傳憑證和私密金鑰至 KeyStore 時指定的別名。您必須完整指定別名名稱;不能使用參照。詳情請參閱「設定 TLS 的選項」。 如果啟用時為 true,則為是
TrustStore

Edge 上的信任儲存庫名稱,該信任存放區含有用於雙向傳輸層安全標準 (TLS) 的憑證或憑證鏈結。如果 <ClientAuthEnabled> 為 true,則為必要欄位。

Apigee 建議您使用參照來指定信任儲存庫名稱,以便變更信任儲存庫,不必重新啟動路由器。詳情請參閱「設定 TLS 的選項」。

IgnoreValidationErrors

如果為 true,可以指定忽略 TLS 憑證錯誤。這與 cURL 的「-k」選項類似。

無論是針對目標伺服器和目標端點設定 TLS,以及設定使用雙向傳輸層安全標準 (TLS) 的虛擬主機時,這個選項都有效。

與目標端點/目標伺服器搭配使用時,如果後端系統使用 SNI 並傳回憑證主體「辨別名稱」(DN) 與主機名稱不符,您就無法忽略錯誤,且連線會失敗。

false
加密

僅適用於 Edge for Private Cloud 4.15.07 以下版本。

指定虛擬主機支援的加密方式。如未指定加密方式,系統會允許 JVM 使用的所有加密套件。

如要限制加密方式,請新增下列元素:

<Ciphers>
  <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
  <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
</Ciphers>
JVM 支援的所有功能
通訊協定

僅適用於 Edge for Private Cloud 4.15.07 以下版本。

指定虛擬主機支援的通訊協定。如果未指定通訊協定,系統將允許 JVM 使用的所有通訊協定。

如要限制通訊協定,請新增下列元素:

<Protocols>
  <Protocol>TLSv1</Protocol>
  <Protocol>TLSv1.2</Protocol>
  <Protocol>SSLv2Hello</Protocol>
</Protocols>
JVM 支援的所有功能
UseBuiltInFreeTrialCert 僅適用於 Edge Cloud。
UseBuiltInFreeTrialCert

如果您有 Cloud Edge for Cloud 帳戶,但尚未取得 TLS 憑證和金鑰,您可以建立使用 Apigee 免費試用憑證和金鑰的虛擬主機。也就是說,您不必先建立 KeyStore,就能建立虛擬主機。

已為「*.apigee.net」網域定義 Apigee 免費試用憑證。因此,虛擬主機的 <HostAlias> 也必須採用 *.apigee.net 的形式。

請參閱「定義使用 Apigee 免費試用憑證和金鑰的虛擬主機」。

false
PropagateTLSInformation 僅適用於 Edge Cloud 的 Alpha 測試版。
ConnectionProperties

允許 Edge 擷取傳輸層安全標準 (TLS) 連線資訊。然後,這項資訊可在 API Proxy 中做為流程變數使用。詳情請參閱「在 API Proxy 中存取 TLS 連線資訊」一文。

false
ClientProperties

允許擷取 Edge 在雙向傳輸層安全標準 (TLS) 中擷取的用戶端憑證詳細資料。然後,這項資訊可在 API Proxy 中做為流程變數使用。詳情請參閱「在 API Proxy 中存取 TLS 連線資訊」一文。

false
資源 適用於 Edge Cloud 和 Private Cloud 4.17.01 以上版本。
proxy_read_timeout

設定訊息處理器和路由器之間的逾時時間 (以秒為單位)。路由器會中斷連線,如果在此時限之前未收到訊息處理器的回應,則會傳回 HTTP 504 回應。

Proxy_read_timeout 的值應大於訊息處理器使用的目標逾時值。這樣可確保訊息處理器在訊息處理器傳回回應之前,不會逾時。訊息處理器的預設目標逾時時間為 55 秒或 55000 毫秒,如訊息處理器的 conf_http_HTTPTransport.io.timeout.millis 權杖定義。

57
keepalive_timeout

在用戶端發出包含 Keep-Alive 標頭的要求時,設定用戶端與路由器之間的逾時時間長度 (以秒為單位)。路由器會保持連線開啟,直到持續時間到期為止。

如果路由器正在等候訊息處理器的回應,路由器就不會關閉連線。逾時只會在路由器將回應傳回用戶端之後開始。

65
ssl_ciphers

設定虛擬主機支援的加密,覆寫路由器上設定的預設加密器。

指定以冒號分隔的加密清單,格式如下:

<Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH;</Property>

如要瞭解這個權杖允許的語法和值,請參閱 https://www.openssl.org/docs/man1.0.2/man1/ciphers.html。 請注意,這個權杖使用的是 OpenSSL 加密名稱 (例如 AES128-SHA256),而非 Java/JSSE 加密名稱 (例如 TLS_RSA_WITH_AES_128_CBC_SHA256)。

HIGH:!!aNULL:

!MD5:

!DH+3DES:

ssl_protocols

僅適用於 Edge for Private Cloud。

將虛擬主機支援的 TLS 通訊協定設為以空格分隔的清單,並覆寫路由器上設定的預設通訊協定。

注意:如果兩個虛擬主機共用相同的通訊埠,則必須將 ssl_protocols 設為相同的通訊協定。也就是說,共用同一個通訊埠的虛擬主機必須支援完全相同的通訊協定。

指定以空格分隔的 TLS 通訊協定清單,格式如下:

<Property name="ssl_protocols">TLSv1 TLSv1.2</Property>
TLSv1 TLSv1.1 TLSv1.2
proxy_request_buffering

啟用 (開啟) 或停用要求主體的緩衝處理功能。啟用緩衝功能時,路由器會緩衝整個要求主體,然後再傳送至訊息處理器。如果發生錯誤,路由器可以重試其他訊息處理器。

如果關閉,緩衝功能就會停用,系統會在收到要求主體時,立即將要求主體傳送至訊息處理器。如果發生錯誤,路由器不會重試給其他訊息處理器的要求。

proxy_buffering 啟用 (開啟) 或停用 (關閉) 回應的緩衝處理功能。緩衝功能開啟時,路由器會緩衝處理回應。緩衝功能關閉時,系統會同步將回應傳送給用戶端,因為路由器收到回應。