Private Cloud 用仮想ホストの構成

オンプレミス環境にインストールしている場合は、仮想ホストを完全に管理できます。TLS の使用の有無にかかわらず、どのような環境のどのような組織のための仮想ホストでも作成できます。

このドキュメントでは、簡単な仮想ホストの作成方法について説明します。ここでは TLS をサポートしない仮想マシンを作成します。TLS をサポートする仮想ホストの作成方法など、その他のサンプルについては、Private Cloud 用 API への TLS アクセスの構成をご覧ください。

詳細:

ホスト エイリアスについて

仮想ホストのホスト エイリアスは、仮想ホストの作成時に指定する必要があります。通常、これは仮想ホストの DNS 名になります。

Edge Router は、リクエストを処理する API プロキシを決定するプロセスの一環として、受信リクエストの Host ヘッダーと使用可能なホスト エイリアスのリストとを比較します。仮想ホストを介してリクエストを発行する場合は、仮想ホストのホスト エイリアスと一致するドメイン名を指定するか、Router の IP アドレスと、ホスト エイリアスを含む Host ヘッダーを指定します。

たとえば、ポート 9001myapis.apigee.net のエイリアスを持つ仮想ホストを作成した場合、その仮想ホストを介した API への cURL リクエストでは、次のいずれかの形式を使用できます。

  • myapis.apigee.net の DNS エントリがある場合:

    curl http://myapis.apigee.net:9001/proxy-base-path/resource-path
  • myapis.apigee.net の DNS エントリがない場合:

    curl http://routerIP:9001/proxy-base-path/resource-path -H 'host:myapis.apigee.net'

    この形式では、Router の IP アドレスを指定し、Host ヘッダーでホスト エイリアスを渡します。

    curl http://routerIP:9001/proxy-base-path/resource-path

仮想ホストの DNS エントリがない場合のオプション

DNS エントリがない場合の 1 つの方法は、Router の IP アドレスと仮想ホストのポートの組み合わせとして、ホスト エイリアスを routerIP:port の形式で設定することです。例:

192.168.1.31:9001

curl コマンドでは次のように指定します。

curl http://routerIP:9001/proxy-base-path/resource-path

これは、Edge UI で機能するため、推奨のオプションとなります。

複数の Router がある場合は Router ごとにホスト エイリアスを 1 つずつ追加します。その際、各 Router の IP アドレスと仮想ホストのポートを指定します。

あるいは、ホスト エイリアスを temp.hostalias.com のような値に設定することもできます。この場合は、すべてのリクエストで次のように Host ヘッダーを渡す必要があります。

curl -v http://routerIP:9001/proxy-base-path/resource-path -H 'Host: temp.hostalias.com'

または、/etc/hosts ファイルにホスト エイリアスを追加します。たとえば、次の行を /etc/hosts に追加します。

192.168.1.31 temp.hostalias.com

これで、DNS エントリがある場合と同様にリクエストを発行できるようになります。

curl -v http://myapis.apigee.net:9001/proxy-base-path/resource-path

Edge for Private Cloud 4.16.01 以降のホストポートについて

仮想ホストを作成するときに、その仮想ホストで使用する Router のポートを指定します。たとえば、ポート 9001 を指定します。

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

仮想ホストの作成

このセクションでは、Apigee Edge for Private Cloud の仮想ホストを作成する方法について説明します。新しい仮想ホストを作成するには、組織管理者である必要があります。

API または Edge UI を使用して、Apigee Edge for Private Cloud の仮想ホストを作成できます。これらについては、次のセクションで説明します。

ブラウザを使用した仮想ホストの作成

このセクションでは、ブラウザを使用して仮想ホストを作成する方法について説明します(Edge UI のみ)。

Edge UI で新しい仮想ホストを作成するには:

  1. Edge 管理 UI にログインします。
  2. [Admin] > [Virtual Hosts] を選択します。
  3. プルダウン リストから環境を選択します。

    その環境の仮想ホストのリストが表示されます。

  4. 新しい仮想ホストを作成するには、[+ Virtual Host] を選択します。

    [Create Virtual Host] フォームが表示されます。

    既存の仮想ホストの名前をクリックしてそのホストを編集することもできます。

  5. 新しい仮想ホストを定義します。[Base URL] フィールドにはプロトコルを含める必要があります(このフィールドの値の前に「http://」または「https://」を付けます)。

    次のことにも注意してください。

    • 作成できる仮想ホストの数に上限はありません
    • TLS は省略可能です。TLS のバージョンは 1.0、1.1、1.2 です
    • 仮想ホストのポートは構成可能です
  6. [Create] ボタンをクリックして、新しい仮想ホストを保存します。

API を使用した仮想ホストの作成

API を使用して仮想ホストを作成するには、仮想ホストを定義する XML オブジェクトを作成します。たとえば、次の XML オブジェクトでは、HTTP プロトコルを使用する仮想ホストが定義されます。

<VirtualHost name="myVHost">
   <HostAliases>
     <HostAlias>DNS_name_or_IP:port</HostAlias>
   </HostAliases>
   <Interfaces/>
   <Port>9005</Port>
</VirtualHost>

この仮想ホストには name プロパティが指定されています。仮想ホストを使用する API プロキシを構成するときに、name プロパティの値を使用します。

この仮想ホスト経由で API プロキシにアクセスするには、次の URL にリクエストを送信します。

http://routerIP:port/proxy-base-path/resource-path
https://routerIP:port/proxy-base-path/resource-path

ここで

  • http または https: 仮想ホストに TLS サポートが構成されている場合は HTTPS を使用します。仮想ホストが TLS をサポートしない場合は HTTP を使用します。
  • routerIP:port は、仮想ホストの IP アドレスとポート番号から構成されます。
  • proxy-base-pathresource-path は、API プロキシの作成時に定義されます。

通常、API をユーザーに公開するときに IP アドレスとポート番号は使用しません。代わりに、Router とポートの DNS エントリを定義します。例:

http://api.myCompany.com/proxy-base-path/resource-path
https://api.myCompany.com/proxy-base-path/resource-path

DNS エントリを定義すると、DNS エントリのドメイン名に一致する仮想ホストにホスト エイリアスを作成する必要があります。ホスト エイリアスは、クライアントが Host ヘッダーに渡す文字列と一致している必要があります。この例では、api.myCompany.com というホスト エイリアスを指定しています。

<VirtualHost name="myVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9005</Port>
</VirtualHost>

HTTP プロトコルを使用する仮想ホストを作成するには、次の操作を行います。

  1. Create a Virtual Host API を使用して仮想ホストを作成します。ms-IP は、Management Server ノードの IP アドレスまたはドメイン名です。
    $ curl -X POST -H "Content-Type:application/xml" \
    http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \
    -d '<VirtualHost name="newVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9005</Port>
      </VirtualHost>' \
    -u sysAdminEmail:password
  2. ホスト エイリアスに一致する仮想ホストの DNS レコードを作成します。
  3. 既存の API プロキシがある場合は、この仮想ホストをプロキシ エンドポイントの <HTTPConnection> 要素に追加します。仮想ホストがすべての新しい API プロキシに自動的に追加されます。詳しくは、仮想ホストを使用する API プロキシの構成をご覧ください。

仮想ホストの変更

仮想ホストを変更するには、次の操作を行います。

  1. 仮想ホストを更新するには、Update a Virtual Host API を使用します。<ms-IP> は、Management Server ノードの IP アドレスまたはドメイン名です。リクエストの本文には、変更する要素だけでなく、仮想ホストの完全な定義を指定する必要があります。次の例では、仮想ホストのポート番号を 9008 から 9009 に変更しています。

    curl -X PUT -H "Content-Type:application/xml" \
      http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \
      -d '<VirtualHost name="newVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9009</Port>
      </VirtualHost>' \
      -u email:password
  2. Edge for Private Cloud バージョン 4.16.01 と 4.16.05 では、既存の仮想ホストを変更した場合、TLS を有効にするか、ポート番号を変更せずに TLS を無効にして、次の操作を行います。
    1. Router を停止します。

      /opt/apigee/apigee-service/bin/apigee-service edge-router stop
    2. /opt/nginx/conf.d 内のファイルを削除します。

      rm -f /opt/nginx/conf.d/*
    3. Router を起動します。

      /opt/apigee/apigee-service/bin/apigee-service edge-router start
    4. すべての Router に対して同じ操作を繰り返します。