虛擬主機屬性參考資料

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。
info

虛擬主機表示法

用來定義虛擬主機的 XML 物件,取決於您使用的 Edge 版本:Cloud 或 Private Cloud。

如果您是 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>

Private Cloud 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>

Private Cloud 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._\-$%。

無 是
通訊埠

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

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

Cloud:建立虛擬主機時,必須指定通訊埠 443。如果省略,通訊埠預設為 443。如果現有虛擬主機使用的通訊埠不是 443,就無法變更通訊埠。

適用於 Private Cloud 4.16.01 至 4.17.05 版:建立虛擬主機時,請指定虛擬主機使用的路由器通訊埠。例如通訊埠 9001。根據預設,Router 會以「apigee」使用者身分執行,該使用者無法存取特權通訊埠 (通常是 1024 以下的通訊埠)。如要建立將路由器繫結至受保護通訊埠的虛擬主機,請將路由器設定為以有權存取這些通訊埠的使用者身分執行。詳情請參閱「設定虛擬主機」。

適用於 4.16.01 之前的 Private Cloud 版本:路由器只能在特定通訊埠上,使用指定憑證,監聽每個虛擬主機的一個 HTTPS 連線。因此,如果 TLS 終止作業發生在指定連接埠的路由器上,多個虛擬主機就無法使用相同的連接埠號碼。

無 是
BaseUrl 覆寫 Edge UI 顯示的網址,適用於部署至虛擬主機的 API Proxy。如果 Edge 路由器前方有外部負載平衡器,這項功能就非常實用。詳情請參閱「為私有雲設定 API 的 TLS 存取權」。

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

無 否
OCSPStapling

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

啟用後,OCSP 釘選功能可讓 Edge (做為單向 TLS 的 TLS 伺服器) 直接查詢 OCSP 回應器,然後快取回應。接著,Edge 會將此回應傳回給 TLS 用戶端,或在 TLS 握手期間釘選回應。 詳情請參閱「在伺服器上啟用 OCSP 釘選」。

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

關閉 否
HostAliases
HostAlias

Router 上虛擬主機的公開 DNS 名稱,可選擇是否包含通訊埠號碼。虛擬主機的主機別名和通訊埠號碼組合,在 Edge 安裝作業中不得重複。也就是說,如果虛擬主機的主機別名不同,就能使用相同的通訊埠編號。

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

HostAlias 中的通訊埠號碼為選用項目。如果您在主機別名中指定通訊埠,也必須使用 <Port> 元素指定相同通訊埠。或者,您也可以指定兩個 HostAlias 元素,一個包含通訊埠編號,另一個則不包含。

您可以在同一個虛擬主機定義中有多個 HostAlias 定義,對應至虛擬主機的多個 DNS 項目,但不能對應至多個通訊埠。如要使用多個通訊埠,請建立多個虛擬主機定義,並使用不同的通訊埠。

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

Cloud:如果您現有的虛擬主機使用 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 處理 Edge Router 的要求,Router 會將 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。

適用於 Cloud:您必須擁有由信任實體 (例如 Symantec 或 VeriSign) 簽署的憑證。您無法使用自行簽署的憑證,或由自行簽署的 CA 簽署的葉子憑證。

適用於 Cloud:如果現有的虛擬主機設定使用 443 以外的通訊埠,您就無法變更 TLS 設定。也就是說,您無法將 TLS 設定從啟用變更為停用,或從停用變更為啟用。

false 否
ClientAuthEnabled 在 Edge (伺服器) 和提出要求的應用程式 (用戶端) 之間啟用雙向或用戶端 TLS。如要啟用雙向 TLS,您必須在 Edge 上設定包含 TLS 用戶端憑證的信任儲存區。 false 否
KeyStore

Edge 上的金鑰儲存庫名稱。

Apigee 建議您使用參照指定 KeyStore 名稱,這樣就能變更 KeyStore,不必重新啟動路由器。詳情請參閱「傳輸層安全標準 (TLS) 設定選項」。

無 如果「Enabled」為 true,則為「Yes」
KeyAlias 將憑證和私密金鑰上傳至金鑰儲存區時指定的別名。您必須指定別名,不能使用參照。詳情請參閱「傳輸層安全標準 (TLS) 設定選項」。 無 如果「Enabled」為 true,則為「Yes」
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

如果您有 Edge for Cloud 付費帳戶,但還沒有 TLS 憑證和金鑰,可以建立使用 Apigee 免費試用憑證和金鑰的虛擬主機。也就是說,您不必先建立金鑰儲存區,即可建立虛擬主機。

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

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

false 否
PropagateTLSInformation 僅適用於 Edge Cloud Alpha 版。
ConnectionProperties

啟用 Edge 擷取 TLS 連線資訊。 這項資訊隨後會以 API Proxy 中的流程變數形式提供。 詳情請參閱「評估 API Proxy 中的傳輸層安全標準 (TLS) 連線資訊」。

false 否
ClientProperties

啟用雙向 TLS 時,可擷取 Edge 擷取的用戶端憑證詳細資料。 這項資訊隨後會以 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:

!kEDH

否
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 啟用 (開啟) 或停用 (關閉) 回應緩衝。緩衝處理開啟時,路由器會緩衝處理回應。緩衝處理關閉時,回應會同步傳遞至用戶端,也就是 Router 收到回應後立即傳遞。 對 否