はじめに
WordPressをマルチドメイン構成にしようかと考えているので、Apacheのバーチャルホストを有効にしておこうと思います。
Apache 公式ドキュメントに「名前ベースのバーチャルホストは SSL プロトコルの特徴により、 SSL セキュアサーバには使えません。」とありますが、Apache 2.4 であれば問題ないみたい。(参考)
またバーチャルホストのログにバーチャルホスト名を含めます。各バーチャルホスト毎にログを分割する場合はsplit-logfileを使うことができる。
リクエストの流れ
- リクエストが来るとNameVirtualHostにマッチするIPかどうかチェックされる(2.4は不要)
- 各<VirtualHost>セクションからマッチしたホストを探す
- なければリストの最初にあるパーチャルホストが使われる
- バーチャルホストを使うとリストはじめのバーチャルホストがデフォルトになる
- そのため、httpd.confのDocumentRootは決して使われなくなる
設定変更
httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "/var/www/html/eastforest.jp" ServerName www.eastforest.jp ServerAlias eastforest.jp </VirtualHost> <VirtualHost *:443> DocumentRoot "/var/www/html/eastforest.jp" ServerName www.eastforest.jp ServerAlias eastforest.jp Protocols h2 http/1.1 SSLEngine on SSLCertificateFile "/usr/local/httpd-2.4.29/conf/server.crt" SSLCertificateKeyFile "/usr/local/httpd-2.4.29/conf/server.key" </VirtualHost>
httpd.conf
#ログファイルにドメイン名を含めるためフォーマットにパラメータ追加
#%v - ServerNameがロギングされる(ServerAliasで来ても)
#%V - リクエストヘッダの値がロギングされる
LogFormat "%v %{%Y-%m-%d %T}t %h %l %u %{SSL_PROTOCOL}x \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
#アンコメント- バーチャルホストの設定ファイル読み込み
Include conf/extra/httpd-vhosts.conf
ログの分割
ログはsplit-logfileでバーチャルホストごとに分割できる。split-logfileはソースディレクトリにあるのでコピーしておく。
# cp /usr/local/src/httpd-2.4.29/support/split-logfile /usr/local/httpd/bin/. # chmod 755 /usr/local/httpd/bin/split-logfile
使い方
split-logfile < access_log