仮想ホスト プロパティのリファレンス

仮想ホストの表現

仮想ホストの定義に使用する XML オブジェクトは、Edge のバージョン(Cloud または Private Cloud)によって異なります。

Private Cloud を使用している場合は、Edge のバージョンに対応した正しい XML を使用していることを確認してください。

Cloud および Private 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>

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 プロキシを構成するときに、この名前で仮想ホストを参照します。

name 属性に使用できる文字は、A-Z0-9._\-$% に制限されています。

なし
Port

仮想ホストが使用するポート番号を指定します。このポートが Edge Router で開いていることを確認してください。

hostalias 要素にポートを指定する場合は、<Port> に指定されたポート番号を使用する必要があります。

Cloud の場合: 仮想ホストを作成するときに、ポート 443 を指定する必要があります。省略すると、デフォルトで 443 に設定されます。443 以外のポート番号を使用している仮想ホストがある場合は、ポート番号を変更できません。

Private Cloud リリース 4.16.01 から 4.17.05 の場合: 仮想ホストを作成するときに、仮想ホストが使用する Router のポートを指定します。たとえば、ポート 9001 を指定します。デフォルトでは、Router は "apigee" ユーザーとして実行されますが、このユーザーには特権ポート(通常は 1024 以下のポート)へのアクセス権がありません。Router を保護ポートにバインドする仮想ホストを作成する場合は、これらのポートにアクセス可能なユーザーとして実行されるように Router を構成する必要があります。詳しくは、仮想ホストの設定をご覧ください。

4.16.01 より前の Private Cloud リリースの場合: Router は、指定された証明書を使用して、特定のポートで仮想ホストごとに 1 つの HTTPS 接続をリッスンします。したがって、Router の指定ポートで TLS が終了する場合、複数の仮想ホストが同じポート番号を使用することはできません。

なし
BaseUrl Edge UI で、仮想ホストにデプロイされる API プロキシの URL を上書きします。これは、Edge Router の前に外部のロードバランサを配置している場合に便利です。詳細については、Private Cloud 用 API への TLS アクセスの構成をご覧ください。

BaseUrl の値にはプロトコル(「http://」または「https://」)を含める必要があります。

なし ×
OCSPStapling

OCSP(Online Certificate Status Protocol)クライアントは、OCSP レスポンダーにステータス リクエストを送信し、TLS 証明書が有効かどうかを確認します。TLS 証明書が有効かどうかはレスポンスに示されます。

有効にすると、OCSP Stapling により、一方向 TLS の TLS サーバーとして機能する Edge が、OCSP レスポンダーを直接クエリして、レスポンスをキャッシュに保存できるようになります。Edge は、TLS handshake の一環として、このレスポンスを TLS クライアントに返すか、ステープルします。詳細については、サーバーで OCSP Stapling を有効にするをご覧ください。

OCSP Stapling を有効にするには、TLS を有効にする必要があります。有効にするには on に設定します。デフォルト値は off です。

off ×
HostAliases
HostAlias

Router の仮想ホストの DNS 名。この名前は一般に公開されます。また、ポート番号を含めることもできます。仮想ホストのホスト エイリアス名とポート番号の組み合わせは、Edge 環境のすべての仮想ホストで一意にする必要があります。異なるホスト エイリアスであれば、複数の仮想ホストで同じポート番号を使用できます。

ホスト エイリアスと一致する DNS エントリと CNAME レコードを作成する必要があります。ホスト エイリアスは、クライアントが Host ヘッダーで渡した文字列と一致する必要があります。

HostAlias のポート番号は省略可能です。ホスト エイリアスの一部としてポートを指定する場合は、<Port> 要素にも同じポートを指定する必要があります。あるいは、ポート番号を含む HostAlias 要素と含まない要素を 1 つずつ指定することもできます。

1 つの仮想ホストの複数の DNS エントリに合わせて、同じ仮想ホストの定義に複数の HostAlias 定義を含めることができます。同じ操作を複数のポートに対して行うことはできません。複数のポートを使用する場合は、ポート別に異なる仮想ホスト定義を作成します。

ホスト エイリアスにワイルドカード(*)を使用できます。ワイルドカード文字「*」は、ホスト エイリアスの先頭(最初の「.」の前)でのみ使用でき、他の文字と混在させることはできません。たとえば、*.example.com です。仮想ホストの TLS 証明書には、証明書の CN 名に一致するワイルドカードが含まれている必要があります(例: *.example.com)。仮想ホスト エイリアスでワイルドカードを使用すると、API プロキシで複数のサブドメイン(alpha.example.combeta.example.comlive.example.com など)に対する呼び出しを処理できます。ワイルドカードを含む仮想ホストは 1 つの仮想ホストとして計算されるので、エイリアスでワイルドカードを使用すると環境内の仮想マシンの数を少なくし、プロダクトの制限内に抑えることができます。

Cloud の場合: 443 以外のポート番号を使用している仮想ホストがある場合、ホスト エイリアスの追加または削除はできません。

Private Cloud の場合: ホスト エイリアスの設定に DNS エントリではなく、Router の IP アドレスを使用する場合は、各 Router の IP アドレスと仮想ホストのポートを指定して、Router ごとに別のホスト エイリアスを追加します。

なし
Interfaces Edge for Private Cloud でのみ利用可能
Interface

port とバインドするネットワーク インターフェースを指定します。この要素を省略すると、ポートがすべてのインターフェースにバインドされます。

たとえば、ポートを en0 にのみバインドする場合は、次のようにします。

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

システムで使用可能なインターフェースを確認するには、"ifconfig -a" コマンドを実行します。

なし すべてのインターフェース
RetryOptions Edge Cloud と Private Cloud 4.18.01 以降で使用可能。
RetryOption

Message Processor が停止したときに、Router がこの仮想ホストに対応する方法を構成します。

複数の値を指定する場合は、<RetryOption> を使用します。有効な値は次のとおりです。

off 再試行を無効にします。リクエストで仮想ホストから障害コードが返されます。
http_599 (デフォルト)Router が Message Processor から HTTP 599 レスポンスを受信すると、Router は次に使用可能な Message Processor にリクエストを転送します。

HTTP 599 は特別なレスポンス コードで、Message Processor のシャットダウン時に生成されます。Message Processor は、既存のすべてのリクエストを処理するように試みますが、新しいリクエストの場合、HTTP 599 で応答し、次の Message Processor のリクエストを再試行するように Router に指示します。

error Message Processor との接続を確立中にエラーが発生したときに、リクエストの送信やレスポンス ヘッダーからの読み取りが行われると、Router は次に使用可能な Message Processor にリクエストを転送します。
timeout Message Processor との接続を確立中にタイムアウトが発生したときに、リクエストの送信やレスポンス ヘッダーからの読み取りが行われると、Router は次に使用可能な Message Processor にリクエストを転送します。
invalid_header Message Processor が空のレスポンスか無効なレスポンスを返すと、Router は次に使用時可能な Message Processor にリクエストを転送します。
http_XXX Message Processor が HTTP コード XXX のレスポンスを返すと、Router は次に使用可能な Message Processor にリクエストを転送します。

複数の値を指定すると、Router は論理和を使用して、これらの値を組み合わせます。

例:

<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 サポートにリクエストを送信する場合に使用可能。
ListenOption

TCP パススルー モードで ELB を使用して Edge Router に対するリクエストを処理する場合、Router は実際のクライアント IP アドレスではなく、ELB の IP アドレスをクライアント IP アドレスとして扱います。Router で実際のクライアント IP アドレスを使用する必要がある場合は、ELB で proxy_protocol を有効にし、TCP パケットでクライアント IP アドレスを渡すようにします。Router では、仮想ホストの <ListenOption>proxy_protocol を設定する必要があります。ELB は TCP パススルー モードのため、通常、Router で TLS を終了します。したがって、TLS の使用を構成した場合にのみ、proxy_protocol を使用するように仮想ホストを構成します。

<ListenOption> のデフォルト値は空の文字列です。

例:

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

後で <ListenOption> の設定を解除するには、仮想ホストを更新して、更新から <ListenOptions> タグを削除します。

SSLInfo
Enabled

一方向の TLS / SSL を有効にします。証明書と秘密鍵を含むキーストアが定義されている必要があります。

Cloud の場合: Symantec、VeriSign などの信頼できる事業体によって署名された証明書が必要です。自己署名証明書、または自己署名 CA によって署名されたリーフ証明書は使用できません。

Cloud の場合: 443 以外のポートを使用するように構成された仮想ホストがある場合、TLS の設定は変更できません。つまり、TLS の設定を有効から無効に変更することや、無効から有効に変更することはできません。

false ×
ClientAuthEnabled Edge(サーバー)とアプリ(クライアント)間で双方向の TLS を有効にします。双方向の TLS を有効にするには、Edge に TLS クライアントの証明書を含むトラストストアを設定する必要があります。 false ×
KeyStore

Edge 上のキーストアの名前。

Apigee では、Router を再起動せずにキーストアを変更できるように、参照でキーストア名を指定することをおすすめします。詳細については、TLS の構成オプションをご覧ください。

なし Enabled が true の場合は必須
KeyAlias 証明書と秘密鍵をキーストアにアップロードしたときに指定されたエイリアス。エイリアス名をそのまま指定する必要があります。参照は使用できません。詳細については、TLS の構成オプションをご覧ください。 なし Enabled が true の場合は必須
TrustStore

Edge 上で、双方向 TLS で使用される証明書または証明書チェーンを含むトラストストアの名前。 <ClientAuthEnabled> が true の場合は必須です。

Apigee では、Router を再起動せずにトラストストアを変更できるように、参照でトラストストア名を指定することをおすすめします。詳細については、TLS の構成オプションをご覧ください。

なし ×
IgnoreValidationErrors

true の場合、TLS 証明書エラーを無視します。これは、cURL の "-k" オプションに似ています。

このオプションは、ターゲット サーバーとターゲット エンドポイントに TLS を構成し、双方向 TLS を使用する仮想ホストを構成する場合に有効です。

ターゲット エンドポイント / ターゲット サーバーでこの設定を使用した場合に、SNI が有効なバックエンド システムからサブジェクトの識別名(DN)がホスト名と一致しない証明書が返されたとき、このエラーは無視できず、接続は失敗します。

false ×
Ciphers

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 でサポートされるすべて ×
Protocols

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 のアルファ版でのみ使用できます。
ConnectionProperties

Edge による TLS 接続情報の収集を有効にします。この情報は、API プロキシのフロー変数として使用できます。詳細については、API プロキシでの TLS 接続情報へのアクセスをご覧ください。

false ×
ClientProperties

双方向 TLS で Edge によるクライアント証明書情報の収集を有効にします。この情報は、API プロキシのフロー変数として使用できます。詳細については、API プロキシでの TLS 接続情報へのアクセスをご覧ください。

false ×
Properties Edge Cloud と Private Cloud 4.17.01 以降で使用可能。
proxy_read_timeout

Message Processor と Router 間の接続がタイムアウトするまでの時間を秒単位で設定します。この期間内に Message Processor からレスポンスを取得できなった場合、Router は接続を切断して HTTP 504 レスポンスを返します。

proxy_read_timeout には、Message Processor で使用されるターゲット タイムアウト値よりも大きい値を設定する必要があります。これにより、Router がタイムアウトする前に Message Processor がレスポンスを返せるようになります。Message Processor のデフォルトのターゲット タイムアウトは 55 秒(55,000 ミリ秒)です。この値は、Message Processor の conf_http_HTTPTransport.io.timeout.millis トークンで定義されています。

57 ×
keepalive_timeout

クライアントが Keep-Alive ヘッダーを含むリクエストを送信した場合に、クライアントと Router 間の接続がタイムアウトするまでの時間を秒単位で設定します。この期間が経過するまで、Router は接続状態を維持します。

この期間が経過しても Message Processor からのレスポンスを待機している場合、Router は接続を終了します。タイムアウトの残り時間は、Router がクライアントにレスポンスを返してから計算されます。

65 ×
ssl_ciphers

仮想ホストでサポートされる暗号を設定します。Router で設定されたデフォルトの暗号は上書きされます。

次のように、コロン区切りの暗号リストを指定します。

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

このトークンの構文と指定可能な値については、https://www.openssl.org/docs/man1.0.2/apps/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 プロトコルをスペース区切りのリストで設定します。Router で設定されたデフォルト プロトコルは上書きされます。

: 2 つの仮想ホストで同じポートを共有する場合は、それらの ssl_protocols に同じプロトコルを設定する必要があります。つまり、同じポートを共有する仮想ホストは、同一のプロトコルをサポートする必要があります。

次のように、TLS プロトコルをスペース区切りのリストで指定します。

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

リクエスト本文のバッファリングを有効(on)または無効(off)にします。バッファリングを有効にすると、Message Processor に送信する前に Router がリクエスト本文全体をバッファに格納します。エラーが発生すると、Router は別の Message Processor で再試行します。

off に設定すると、バッファリングが無効になり、リクエスト本文は受信後すぐに Message Processor に送信されます。エラーが発生した場合、Router は別の Message Processor で再試行しません。

on ×
proxy_buffering レスポンスのバッファリングを有効(on)または無効(off)にします。バッファリングを on にすると、Router はレスポンスをバッファに格納します。バッファリングを off にした場合、Router がレスポンスを受信するとすぐに、クライアントに転送されます。 on ×