VirtualHost とは?
Apache には、複数のサイトを1つのサーバーで運営するための仮想ホストという機能があります。
名前ベースの仮想ホスト
名前ベースの仮想ホスト(Name-based Virtual Hosts)とは、1つのIPアドレスに対して複数のドメイン名(ホスト名)を割り当て、それぞれ別のWebサイトとしてApacheが処理する仕組みです。
Apache の設定例
<VirtualHost *:80>
ServerName www.example1.com
DocumentRoot /var/www/example1
</VirtualHost>
<VirtualHost *:80>
ServerName www.example2.com
DocumentRoot /var/www/example2
</VirtualHost>
IPベースの仮想ホスト
サーバーに複数のIPアドレスを割り当てて、IPアドレスごとに異なるウェブサイトを割り当て、それぞれ別のWebサイトとしてApacheが処理する仕組みです。
SSL通信でIPベース仮想ホストが使われてきた理由の1つは、古いSSLプロトコルでは「SNI(Server Name Indication)」に対応していなかったため、1つのIPアドレスに複数の証明書を割り当てることができませんでした。今ではSNI対応のブラウザが増えたので名前ベースSSLが主流です。