仮想ホストについて

Edge では、Router によってすべての受信 API トラフィックが処理されます。つまり、API プロキシに対するすべての HTTP および HTTPS リクエストは、最初に Edge Router によって処理されます。

仮想ホストでは、1 台のサーバーに複数のドメイン名をホストできます。Edge では、このサーバーが 1 つの Edge Router に対応します。Router で複数の仮想ホストを定義することで、Router は複数のドメイン名に対する API リクエストを処理できます。

Edge の仮想ホストでは、アクセス プロトコル(HTTP または HTTPS)、Router で開くポート、ホスト エイリアスを定義します。ホスト エイリアスは通常、Router の IP アドレスに対応する DNS ドメイン名になります。

たとえば、次の図は 2 つの仮想ホスト定義がある Router を示しています。

最初の仮想ホストが domainName1 ドメインの HTTPS リクエストを処理し、2 番目の仮想ホストが domainName2 ドメインの HTTP リクエストを処理します。

API プロキシに対するリクエストで、Router は受信リクエストの Host ヘッダーをすべての仮想ホストによって定義されたホスト エイリアスのリストと比較し、そのリクエストを処理する仮想ホストを決定します。

仮想ホスト定義について

仮想ホストには次の情報が含まれています。

  • 仮想ホストの内部。この名前は、API プロキシで仮想ホストを参照するため、および仮想ホストの構成時に使用します。
  • 仮想ホストのホスト エイリアス。通常、ホスト エイリアスは、Router の IP アドレスに対応する DNS ドメイン名です。API プロキシ リクエストの Host ヘッダーには、仮想ホストのホスト エイリアスが含まれている必要があります。
  • Router の開かれたポート
  • TLS(HTTPS アクセス)が有効か、有効ではない(HTTP アクセス)か。

たとえば、仮想ホストを作成するときに以下の情報を指定します。

  • 名前 = myvhost
  • ホスト エイリアス = apis.acme.com
  • ポート = 443
  • TLS が有効

仮想ホストの上記の設定に基づいて、API プロキシに対するリクエストで以下の形式が使用されます。

    https://apis.acme.com/{proxy-base-path}/{resource-path}
    

ここで

  • {proxy-base-path} は、API プロキシを作成するときに定義され、API プロキシごとに一意です。次に例を示します。
    https://apis.acme.com/characters
  • {resource-path} は、API プロキシを介してアクセスできるリソースへのパスです。次に例を示します。
    https://apis.acme.com/characters/coyote
        https://apis.acme.com/characters/roadrunner

Edge for Cloud での仮想ホストについて

各 Edge 組織には 2 つの環境(testprod)が自動的に作成されます。各環境に 2 つの仮想ホスト(defaultsecure)が作成され、各ホスト エイリアスに DNS レコードが作成されます。

次の表のように、Apigee 提供の仮想ホストのエイリアスには組織環境の名前が含まれます。

環境 仮想ホスト名 ホスト エイリアス ポート TLS を有効化
prod default {org-name}-prod.apigee.net 80 ×
secure {org-name}-prod.apigee.net 443
test default {org-name}-test.apigee.net 80 ×
secure {org-name}-test.apigee.net 443

たとえば、prod 環境の「myorg」という組織のデフォルトのドメイン名は、「myorg-prod.apigee.net」です。したがって、その組織内の API プロキシにアクセスするには、次の形式の URL を使用します。

    http://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}
    https://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}
    

Apigee 有料プラン: 「apigee.net」を含むドメイン名を顧客に公開したくない場合があります。その場合、DNS エントリと CNAME レコードを使用して、ドメイン名を Edge 上の組織にマッピングできます。ホスト エイリアスがそのドメイン名に設定された仮想ホストを作成する必要もあります。これにより、デベロッパーは会社に固有のドメインで API にアクセスできます。

Edge のカスタム ドメインの例を次に示します。

    https://apis.acme.com/{proxy-base-path}/{resource-path}
    

Edge for Private Cloud での仮想ホストについて

Apigee Edge for Private Cloud をインストールした場合、デフォルトで作成される組織、環境、仮想ホストはありません。通常、Edge のインストール プロセスが完了した後に最初に行うのは、「オンボーディング」プロセスで組織、環境、仮想ホストを作成することです。

オンボーディングを行うには、Edge Management Server ノード上で次のコマンドを実行します。

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision setup-org -f configFile
    

ここで、configFile には、ユーザー、組織、環境、仮想ホストを作成するために必要な情報が含まれています。

たとえば、以下を作成します。

  • 組織の管理者としての役割を果たすために選択したユーザー
  • example という名前の組織
  • prod という名前の組織内の環境
  • ポート 9001 での HTTP アクセスを許可する default という名前の環境内の仮想ホスト
  • Router にアクセスするために使用される DNS 名のホスト エイリアス、または形式が IP:9001 である Router の IP アドレスと仮想ホストのポート

後で必要な数の組織、環境、仮想ホストを Edge のオンプレミス バージョンに追加できます。詳細については、次をご覧ください。

仮想ホストは、Edge Router 上で開かれます。そのため、仮想ホスト用に指定したポートが Router で開かれるようにする必要があります。次の形式のコマンドを使用して、ポートを開くことができます。

    iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT --verbose
    

このコマンドの実行後、次の形式の URL を使用して API にアクセスできます。

    http://<router-ip>:9001/{proxy-base-path}/{resource-path}
    

通常は、IP アドレスとポート番号を使用して顧客に API を公開することはありません。代わりに、ルーターとポートの DNS エントリを定義します。次に例を示します。

    http://myAPI.myCo.com/{proxy-base-path}/{resource-path}
    

DNS エントリの定義に加え、DNS エントリのドメイン名に一致するホスト エイリアスを持つ仮想ホストも作成する必要があります。上記の例では、仮想ホストを作成するときに myAPI.myCo.com というホスト エイリアスを指定します。

ホスト エイリアスと DNS 名について

仮想ホストに対して設定するプロパティの 1 つに、ホスト エイリアスがあります。ホスト エイリアスは通常、仮想ホストの DNS 名です。ホスト エイリアスの設定方法は、Edge インストールのタイプ(Cloud または Private Cloud)によって異なります。

Edge for Cloud のホスト エイリアスと DNS 名

Edge for Cloud では、最初に Edge 組織を作成するときに、Apigee によって 2 つの環境(testprod)、各環境内の 2 つの仮想ホスト(defaultsecure)、各仮想ホストの DNS レコードが自動的に作成されます。

仮想ホストのホスト エイリアスには、組織の名前と環境が含まれています。したがって、仮想ホストを介したリクエストは次のような形式になります。

  • http://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}
  • https://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}
  • http://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}
  • https://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}

通常は、デフォルトの apigee.net ドメインを使用するのではなく、独自のドメイン名を使用する仮想ホストを作成します。そのためには、最初に独自の DNS エントリと CNAME レコードを作成する必要があります。

次の図は、Edge による API リクエストの処理の一般的な構成を示しています。

この例では、

  • api.acme.com は、目的のドメイン名です。
  • api.acme.comacme-prod.apigee.net を指すように DNS エントリと CNAME レコードを定義します。
  • リクエストには、リクエストを処理する仮想ホストを決定するために Router が使用する Host ヘッダーが含まれています。

この例では、仮想ホスト定義で以下の情報を指定します。

  • 名前 = myvhost
  • ホスト エイリアス = apis.acme.com
  • ポート = 443
  • TLS アクセスを有効にする

詳しくは、Cloud 用仮想ホストの構成をご覧ください。

Edge for Private Cloud のホスト エイリアスと DNS 名

Edge for Cloud の場合と同様に、ホスト エイリアスに独自のドメイン名を使用する仮想ホストを作成します。次に、その仮想ホストにアクセスするための独自の DNS エントリと CNAME レコードを作成します。

Cloud と Private Cloud の違いの 1 つは、Cloud Apigee では組織の DNS 名が次の形式で自動的に作成されることです。

  • name=default: http://{org-name}-{env-name}.apigee.net(Router ポート 80)
  • name=secure: https://{org-name}-{env-name}.apigee.net(Router ポート 443)

Edge for Private Cloud では、Router の IP アドレスとポートに対する DNS エントリを作成する必要があります。

たとえば、仮想ホスト定義で以下の情報を指定します。

  • 名前 = myvhost
  • ホスト エイリアス = apis.acme.com
  • ポート = 9001
  • TLS アクセスを有効にする

次の図は、Edge による API リクエストの処理の一般的な構成を示しています。

この例では、

  • api.acme.com は、目的のドメイン名です。
  • api.acme.com が Router の IP アドレスとポートを指すように DNS エントリと CNAME レコードを定義します。
  • リクエストには、リクエストを処理する仮想ホストを決定するために Router が使用する Host ヘッダーが含まれています。

詳しくは、Private Cloud 用仮想ホストの構成をご覧ください。

ホスト エイリアスとワイルドカード

ホスト エイリアスにワイルドカード(*)を使用できます。ワイルドカード文字(*)は、ホスト エイリアスの先頭(最初の . の前)で使用する必要があります。他の文字と混在することはできません。

ワイルドカードを使用した有効なホスト エイリアスは次のとおりです。

*.example.com

次の例は無効です。

      www.*.example.com
      w*.example.com

仮想ホスト エイリアスでワイルドカードを使用すると、API プロキシが複数のサブドメイン(alpha.example.combeta.example.comlive.example.com など)に対する呼び出しを処理できるようになります。ワイルドカードを含む仮想ホストは 1 つの仮想ホストとして計算されるので、エイリアスでワイルドカードを使用すると環境内の仮想マシンの数を少なくし、プロダクトの制限内に抑えることができます。

仮想ホストの TLS 証明書の CN 名に一致するワイルドカードが含まれている必要があります(例: *.example.com)。

仮想ホストのプロパティについて

Edge では、仮想マシンを XML オブジェクトで表します。以下に仮想ホストを定義する XML オブジェクトの例を示します。

    <VirtualHost name="vhostName">
        <HostAliases>
            <HostAlias>hostAlias</HostAlias>
        </HostAliases>
        <Interfaces>
            <!-- Private Cloud only -->
            <Interface>interfaceName</Interface>
        <Port>portNumber</Port>
        <BaseURL>http://myCo.com<</BaseUrl>
        <OCSPStapling>off</OCSPStapling>
        <RetryOptions/>
       <SSLInfo>
            <Enabled>trueFalse</Enabled>
            <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
            <KeyStore>ref://keystoreRef</KeyStore>
            <KeyAlias>keyAlias</KeyAlias>
            <TrustStore>ref://truststoreRef</TrustStore>
            <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
        </SSLInfo>
        <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>
            <Property name="ssl_protocols">protocolList</Property>
            <Property name="ssl_ciphers">cipherList</Property>
        </Properties>
    </VirtualHost>
    

設定できるプロパティは、Edge for Cloud を使用するか Edge for Private Cloud を使用するかによって異なります。Edge for Private Cloud を使用する場合、使用できるプロパティは Edge のバージョンにも依存します。仮想ホストのすべてのプロパティの詳細な説明については、仮想ホスト プロパティ リファレンスをご覧ください。

特定のバージョンの Edge に仮想ホストを作成する方法については、次をご覧ください。