虛擬主機屬性參考資料

您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

虛擬主機表示法

用於定義虛擬主機的 XML 物件是以 Edge 版本 (Cloud 或 Private Cloud) 版本為準。

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

Cloud 與私有雲 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>

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-Z、0-9、._\-$%。

通訊埠

指定虛擬主機使用的通訊埠號碼。確認 Edge Router 上的通訊埠已開啟。

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

適用於 Cloud:建立虛擬主機時,您必須指定通訊埠 443。如果省略,系統會預設將通訊埠設為 443。如果您有使用 443 以外通訊埠的現有虛擬主機,就無法變更通訊埠。

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

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

BaseUrl 針對部署至虛擬主機的 API Proxy,覆寫 Edge UI 顯示的網址。在 Edge Router 前端有外部負載平衡器時,此選項非常實用。如需更多資訊,請參閱「設定私有雲的 TLS API 存取權」。

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

OCSPStapling

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

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

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

關閉
HostAliases
HostAlias

路由器上虛擬主機的公開 DNS 名稱,可視需要加入連接埠號碼。虛擬主機的虛擬主機別名名稱和連接埠號碼組合,必須是 Edge 安裝中所有虛擬主機的不重複組合。也就是說,如果多個虛擬主機有不同的主機別名,則可使用相同的通訊埠編號。

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

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

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

您可以在主機別名中加入「*」萬用字元。「*」萬用字元只能放在主機別名開頭 (第一個「.」之前),且不得與其他字元混用。例如 *.example.com。虛擬主機的 TLS 憑證必須在憑證的 CN 名稱中包含相符的萬用字元。例如:*.example.com。在虛擬主機別名中使用萬用字元可讓 API 代理程式處理針對多個子網域 (例如 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 (預設) 如果 Router 收到來自 Message Processor 的 HTTP 599 回應,Router 會將要求轉送至下一個 Message Processor。

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

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

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

例如:

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

如果您在 TCP 直通模式中使用 ELB 處理對邊緣路由器的要求,路由器會將 ELB 的 IP 位址視為用戶端 IP,而不是實際的用戶端 IP。如果 Router 需要真正的用戶端 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 而無須重新啟動 Router。詳情請參閱設定 TLS 的選項

如果「Enabled」為「true」,則為「是」
KeyAlias 您上傳憑證和私密金鑰至 KeyStore 時指定的別名。您必須使用文字方式指定別名名稱,無法使用參照。詳情請參閱「設定 TLS 的選項」。 如果「Enabled」為「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

如果您有付費的 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

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

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

設定訊息處理器與路由器之間的逾時時間 (以秒為單位)。如果在這個時間結束前,路由器仍未收到訊息處理器的回應,路由器就會捨棄連線,並傳回 HTTP 504 回應。

proxy_read_timeout 的值應大於訊息處理工具使用的目標逾時值。這樣可確保 Router 不會在 Message Processor 有時間傳回回應前就逾時。根據訊息處理器的 conf_http_HTTPTransport.io.timeout.millis 權杖定義,訊息處理器的預設目標逾時時間為 55 秒,即 55000 毫秒。

57
keepalive_timeout

當用戶端提出含有 Keep-Alive 標頭的要求時,設定用戶端與 Router 之間的逾時時間長度 (以秒為單位)。路由器會在時間到期前保持連線狀態。

如果 Router 目前正在等待訊息處理器的回應,就不會關閉連線。只有在 Router 將回應傳回給用戶端後,才會開始逾時。

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)。

高:!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

啟用 (開啟) 或停用 (關閉) 要求主體的緩衝功能。當緩衝功能開啟時,路由器會先將整個要求主體緩衝,再傳送至訊息處理器。如果發生錯誤,路由器可以重試不同的訊息處理器。

如果關閉,則會停用緩衝功能,且要求主體會在收到後立即傳送至訊息處理器。如果發生錯誤,Router 不會將要求重試至其他 Message Processor。

proxy_buffering 啟用 (開啟) 或停用 (關閉) 回應緩衝處理。開啟緩衝功能後,路由器會緩衝回應。當緩衝功能關閉時,回應會在 Router 收到後立即同步傳送至用戶端。