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 がある場合は、Rounter ごとにホスト エイリアスを追加して、各 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 プロキシの作成時に定義されます。

通常、IP アドレスとポート番号を含めた 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 プロキシがある場合は、Proxy Endpoint の <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 に対して同じ操作を繰り返します。