1 VirtualHostとは?
VirtualHostとは、1台のコンピュータ上で2つ以上のWebサイトを扱う方法です。
VirtualHostには、次の2種類があります。
① NAMEベース
利用するドメイン全てに同じIPアドレスを使用
② IPベース
利用するドメインごとにIPアドレスを設定(1つのサーバ内に複数のIPアドレス割振)
本記事では、上のうち①の実現方法について示します。
自分の備忘録として記述したものを、公開するものです。
2 VirtualHostで複数のHTTPSサイトを開く
2.1 本記事前提
本記事で示す設定例は、下に示す環境下におけるものです。
・ Apache/2.4.51 (Red Hat Enterprise Linux)
Let's EncryptでSSL化済み、IPv6接続
・ Red Hat Enterprise Linux release 9.0 (Plow)
Let's Encrypt によるSSL化については、次のWebページをご参照いただければと思います。
2.2 設定ファイル構成の基本方針
VirtualHostの設定をどのファイルにしたら良いのかについては、
世の中考え方もあっていろいろあるようですので、本記事での方針を示したいと思います。
まず、はじめに。
ドメインのVirtualHost設定ファイルは、”httpd.conf”からincludeされるものとします。
これについては、もともとそうなっているので、何かを設定する必要はありません。
ドメインごとにVirtualHostディレクティブを記述する必要がありますので、
ドメイン別にVirtualHost設定ファイルを作成るようにします。
これによって、ドメインごとに設定の修正や削除を行う際、
他ドメインのサイトへの影響を考慮せずに済みます。
各ドメインのVirtualHostディレクティブ内に記述すべき設定には、
同一の内容も少なくありません。
それらの設定を運用中に変更する場合、
ドメインの数が多いと修正箇所が多くなり、手間が増えるだけでなく管理も煩雑になります。
そのような設定はあらかじめVirtualHost用の共通設定ファイルにまとめて記述し、
ドメイン別のVirtualHostM設定ファイルからincludeするようにすると良いでしょう。
2.3 VirtualHostの設定
VirtualHostでマルチドメインに設定するには、
次の2種類のファイルを変更したり、追加します。
① ssl.conf
② VirtualHostディレクティブによるドメイン設定ファイル
2.3.1 ssl.conf
まず、”/etc/httpd/conf.d/ssl.conf”ファイル中の、以下に示す行以降をすべて削除します。
##
## SSL Virtual Host Context
##
#####ここ(”<VirtualHost>”)から、”</VirtualHost>”までのすべてを削除#####
そして、以下を追記します。
NameVirtualHost *:443
- 【備考: NameVirtualHost】
-
NameVirtualHostディレクティブは、
名前ベースの仮想ホストの設定を行ないたい場合に指定するパラメータとなり、
上記の設定の場合、HTTPS(443ポート)で来たものはすべてVirtualHostを見よ
という意味になります。
大量の行を削除するので、不安になるかと思います。
削除するのはひとつの”VirtualHostディレクティブ”だけであり、
コメントを除けば意味ある設定行はそう多くありません。
それらの設定を無くせないのであれば、VirtualHost設定ファイル中に移動することが可能です。
2.3.2 VirtualHostディレクティブによるドメイン設定ファイル
”/etc/httpd/conf.d”の下に、
ドメインごとに、VirtualHostディレクティブのファイルを作成します。
ファイル名ベースは何であってもよいのですが、
ファイル名拡張子(POSIX系ではそう言わなかったと思いますが、Windowsにならって)は
”.conf”である必要があります。
ファイル内容は、たとえばドメインの一つが”hoge.com”でるとした場合、 VirtualHostディレクティブは下に示すように記述します。
<virtualhost *:443>
DocumentRoot "/home/www/public_html"
ServerName hoge.com:443
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1
SSLCertificateFile /etc/letsencrypt/live/hoge.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/hoge.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/hoge.com/fullchain.pem
<Directory "/home/www/Public_html/">
~必要に応じて~
</Directory>
</virtualhost>
設定は必須ではありませんが、ログ出力についても示します。
全てのドメインのアクセスログが1つのログファイルに出力されるよりは、
ドメイン毎に出力された方が何かと便利です。
先に示したVirtualHost設定の中に、次のようにログ出力の設定を追記します。
ErrorLog logs/hoge.com-error_log
CustomLog logs/hoge.com-access_log common
なお、ログのフォーマットには、次のものがデフォルトで利用できます。
① common
② combined
③ combinedio
④ referer
⑤ agent
Apacheのインストール方法によっては、referer、agentが定義されていない場合があります。
2.3.3 設定の反映
設定ファイルの編集が完了したら、Apacheを再起動します。
以上
HTMLだと、
思うように編集することは難しく、やろうすればとっても時間が掛かります。
ですので、本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。
役に立てていただければ、うれしく思います。
このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元と著者名は明らかにしてください。
なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。