IDCF Tech-Blog

読者です 読者をやめる 読者になる 読者になる

IDCF テックブログ

クラウド・ビッグデータ・データセンターを提供するIDCフロンティアの公式エンジニアブログ

セルフクラウドでApacheの「IPベースのバーチャルホスト」

※この記事は公開されてから1年半以上経過しています。情報が古い可能性がありますのでご注意ください。

こんにちは、梶川です。

今回はIDCフロンティア セルフクラウドで、Apacheのバーチャルホストのお話です。

IDCフロンティア セルフクラウドは、内部のプライベートIP(仮想マシンへ振られるIP)がDHCPで管理されており、自由にIPアドレスを仮想マシンへ振ることができません。

バーチャルホスト、IPアドレスとくれば、鋭い方はもうお分かりになったかもしれませんが、IPを自由に振れない=IPベースのバーチャルホストはできない、ということになります。今時、IPベースのバーチャルホストを使いたい理由は、おそらくHTTPSを複数ホストしたい場合でしょう。名前ベースのバーチャルホストは、ご存知のようにHTTPSのバーチャルホストでは使えません。

それでは、IDCフロンティア セルフクラウドではHTTPSのバーチャルホストはできないのでしょうか?ブログに書くぐらいなので、もちろんできます。その方法を説明しましょう。(もちろんクラウドなので、ジャブジャブと仮想マシンを作って、1仮想マシン=1HTTPSホストで作ってもらっても構わないんですけどね。;-))

 

クラウド側の設定

IDCフロンティア セルフクラウドではネットワークの上位に「仮想ルーター」があり、ポートフォワードの機能が提供されています。今回はこれを使って実現します。具体的には、バーチャルホスト用のパブリックIPアドレスを複数取得し、それぞれのパブリックポート80(または443)をバーチャルホストを設定する仮想マシンの、別々のプライベートポート(8081と8082など)へポートフォワードするように設定します。

ここでは2つのバーチャルホストを設定するために、2つのパブリックIPを取得し、図にあるポートフォワードを設定していきましょう。設定方法は利用ガイドポートフォワードを参照してください。

登録するルールは、次の通りです。

合わせてそれぞれのIPでファイアウォールを設定する必要があります。パブリックIPに対してのファイアウォール設定のため、ポートフォワード前のTCP-80(又は443)を開ける必要があります。設定方法は利用ガイドのファイアウォールの設定を参照してください。

クラウド側の設定は、これで準備完了です。

Apacheの設定

Apache側では、名前ベースのバーチャルホストではなく、IPベースのバーチャルホストをポートを指定した形で設定していきます。具体的には次のような形で設定します。

 Listen 8081
 <VirtualHost *:8081>
     ServerName www1.example.jp
     DocumentRoot /var/www/html/www1.example.jp
     ErrorLog logs/www1.example.jp-error_log
     CustomLog logs/www1.example.jp-access_log combined
 </VirtualHost>

 Listen 8082
<VirtualHost *:8082>
     ServerName www2.example.jp
     DocumentRoot /var/www/html/www2.example.jp
     ErrorLog logs/www2.example.jp-error_log
     CustomLog logs/www2.example.jp-access_log combined
 </VirtualHost>

この設定はIPベースのバーチャルホストですが、IPはDHCPで振られたIPアドレス一つだけです。ただし<VirtualHost>タグでポートを指定した形(*:8081,*:8082)でバーチャルホストを設定しています。また、指定したポートでApacheがListenするように8081,8082を指定しています。つまり、IPはひとつですがポートを分けることで、バーチャルホストを特定しています。例ではHTTPS(SSL)を設定していませんが、各バーチャルホストでHTTPS(SSL)の設定をすれば、HTTPSを複数ホストすることも可能です。

Copyright © IDC Frontier Inc.