フルスタックエンジニアのノウハウ
2021.02.17    2022.06.11

VirtualHostとは?

この記事の動画版はこちら(画像クリックでYoutubeに飛びます)

チャンネル登録お願いします!


VirtualHostとは?


VirtualHostとは、1台のサーバーで複数のドメインを運用するための技術です。


通常、WebサイトやWebサービスを運営する場合は、運営するドメイン単位にサーバーが必要になります。


例えば、mysite1.comというサイトと、mysite2.comという2つのサイトを運営する場合は、このようにそれぞれにサーバーが必要になります。



VirtualHostという技術を使うと、こういった複数のドメインを1台のサーバー内で動かすことが出来ます。




なお、「サーバーとは何か?」という基礎知識については、こちらの記事で説明しているので併せて学習してみてください。


関連記事

プログラマーのためのサーバーの基礎



VirtualHostのメリット


VirtualHostを使うと、このように複数のサイトを1台のサーバーで動かすことが出来るため、サイト毎にサーバーを準備する必要がなく、サーバーのコストを抑えられるというメリットがあります。


例えば、アクセスの少ないサイトを複数運営している場合や、サブドメインで別のサイトを運営したい場合(例:shop.mysite1.com)また、実験的に作ったWebサービスを複数立ち上げる場合などにとても有効です。



ちなみに、多くの共用レンタルサーバーでは、VirtualHostの機能があらかじめ備わっており、管理画面から複数のドメインを1台のサーバー内に追加出来るようになっています。



VirtualHostの設定方法


VirtualHostの設定を行う場合は、Webサーバーである「Apache」の設定ファイルを編集します。


メインの設定ファイルである「httpd.conf」の末尾に直接追加しても良いですし、「extra」や「conf.d」ディレクトリに「httpd-vhosts.conf」といった専用のインクルードファイルがある場合はそちらに追加しましょう。


VirtualHostには「名前ベース」と「IPベース」という2つの方式があります。





名前ベース


名前ベースは、先程の例にあったように、アクセスされた「ドメイン名(名前)」に応じて、見せるサイトを切り替える方式です。


例えば、


mysite1.comというドメイン名でアクセスされたら、サーバー内のAというサイトを見せる。


mysite2.comというドメイン名でアクセスされたら、サーバー内のBというサイトを見せる。


このように、アクセスされたドメイン名に応じて、Apacheが自動的に見せるサイトを切り替えてくれます。



IPベース


もう1つのIPベースは、アクセスされた「IPアドレス」に応じて、見せるサイトを切り替える方式です。


サーバーにあらかじめ複数のIPアドレスを割り当てておき、どのIPアドレスにアクセスされたかによって、見せるサイトを切り替えます。


ただ、1台のサーバーに複数のIPアドレスを割り振って複数サイトを運用するという方法はあまり一般的ではなく、基本的には、前者の「名前ベース」方式を使うことがほとんどだと思います。



VirtualHost の具体的な設定方法

具体的な設定方法としては、Apacheの設定ファイルに、このように<VirtualHost>という設定を追加します。




このように書くと、「mysite1.com」というドメインでアクセスされたら「/var/www/mysite1」というディレクトリ(フォルダ)に設置されているサイトを表示するという設定になります。


さらに、このようにVirtualHostの設定を追加していくことが出来ます。




このように追加すると、「mysite2.com」というドメインでアクセスされたら「/var/www/mysite2」というディレクトリに設置されているサイトが表示されます。


このように、<VirtualHost>の設定の中で「ドメイン名(FQDN)」と、サイトデータが置いてある「ドキュメントルート」を関連付けておくだけでOKです。


VirtualHostの設定には、他にも、サイト管理者のメールアドレスやエラーログ/アクセスログの設定などを個別に指定することも出来ます。



また、ポート443のVirtualHost設定を追加し、SSL証明書の関連の設定を指定すれば、httpsでのアクセスにも対応可能です。




VirtualHostの活用例


僕は、実験的なWebサービスを作って公開する際は、VirtualHostをよく使います。


実験サービス用のクラウドサーバーを1台持っており、新しいWebサービスを作ったら、そこにVirtualHost設定を追加して公開します。


この方法なら、新しいWebサービスを作る度に、サーバーを契約して構築する手間も省けますし、サービス毎にかかるサーバー費用も節約出来ます。


運用していく中で、ユーザーが増えてアクセス数が多くなってきたら、そのサービスだけ個別のサーバー環境を用意して独立させるといった感じです。


また、ローカルの開発環境では、XAMPPのApacheにVirtualHostを設定し、複数のサービスを1つのApache上で開発しています。


開発するサービスによってミドルウェアのバージョンが異なる場合や、チーム開発を行う場合には

Dockerなどのコンテナを使用した方が便利なんですが、同じバーションの開発環境で、1人で複数のサービスを開発する場合は、コンテナを個別に用意して都度起動するよりも、1つのApacheで管理出来た方が便利なので、VirtualHostを利用することも多いんです。



まとめ


ということで、今回は「VirtualHost」について解説しましたが、いかがだったでしょうか?


まとめると、


①VirtualHostとは、1台のサーバーで複数のドメインを運用するための技術

②サーバー構築の手間や費用を抑えられるメリットがある

③VirtualHostには「名前ベース」と「IPベース」がある

④設定方法はApacheの設定ファイル<VirtualHost>設定を追加する


ということでした。


VirtualHostは、複数のサイトを1台のサーバーで運用出来るので、サーバーの構築作業や費用の面でメリットがありますが、その反面、1台のサーバーで稼働しているため、アクセス集中やサーバー障害、サーバーメンテナンスなどがあった場合に稼働している全サイトに影響が出てしまいます。


そういったデメリットも考慮しながら、上手に活用していきましょう!


おすすめ記事