虛擬主機屬性參考資料

您目前查看的是 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.combeta.example.comlive.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 收到回應後立即傳遞。