Apacheの名前ベースのバーチャルホストを設定して1つのサーバーで2つのWEBサイトを運用します。
※CentOS7関連のインストール・設定については「CentOSで自宅サーバー様」を参考に自分の環境に合わせて設定しています。
WEBサイト1をhttp://main-server.com、DocumentRootを/var/www/html/main、
WEBサイト2をhttp://second-server.com、DocumentRootを/var/www/html/secondとします。
●バーチャルホスト未定義ホスト名でアクセス時にアクセスを拒否する未定義ホスト用バーチャルホスト設定ファイル作成
# vi /etc/httpd/conf.d/virtualhost-00.conf
<VirtualHost *:80>
ServerName any
<Location />
Require all denied
</Location>
</VirtualHost>
●main-server.com用のバーチャルホスト設定ファイル作成
# vi /etc/httpd/conf.d/main-server.com.conf
<VirtualHost *:80>
ServerName main-server.com
DocumentRoot /var/www/html/main
</VirtualHost>
●second-server.com用のバーチャルホスト設定ファイル作成
# vi /etc/httpd/conf.d/second-server.com.conf
<VirtualHost *:80>
ServerName second-server.com
DocumentRoot /var/www/html/second
ErrorLog logs/second-server-error_log
CustomLog logs/second-server-access_log combined env=!no_log
</VirtualHost>
●バーチャルホスト設定有効化
systemctl restart httpd
<バーチャルホストのSSL設定>
バーチャルホストで運用している2つ(以上)のサイトをSSL化する場合の設定です。
main.server.com、second-server.com共にcertbotによるサーバー証明書を取得済みとして記述します。
※LET’S ENCRYPTのサーバー証明書の取得、mod_sslのインストールについては
「certbotを使ってWEBサーバーをSSL化」をご覧ください。
●ssl.confを以下のように編集(必要な部分のみ抜き出しています)
# vi /etc/httpd/conf.d/ssl.conf
#<VirtualHost _default_:443> ←#を付けてコメントアウト
NameVirtualHost *:443
SSLStrictSNIVHostCheck off
###main.server.comの設定###
<VirtualHost *:443>
DocumentRoot “/var/www/html/main”
ServerName main-server.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+
AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+
3DES:!aNULL:!MD5:!DSS
(SSLCipherSuiteから:!DSSまで1行で記述)
SSLHonorCipherOrder on
SSLCertificateFile /etc/letsencrypt/live/main-server.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/main-server.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/main-server.com/chain.pem
<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/var/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch “MSIE [2-5]” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”
Header always set Strict-Transport-Security “max-age=15768000”
</VirtualHost>
###second-server.comの設定###
<VirtualHost *:443>
ServerName second-server.com:443
DocumentRoot /var/www/html/second
ErrorLog logs/ssl_second_error_log
TransferLog logs/ssl_second_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+
AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+
3DES:!aNULL:!MD5:!DSS
(SSLCipherSuiteから:!DSSまで1行で記述)
SSLHonorCipherOrder on
SSLCertificateFile /etc/letsencrypt/live/second-server.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/second-server.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/second-server.com/chain.pem
<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/var/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch “MSIE [2-5]” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”
Header always set Strict-Transport-Security “max-age=15768000”
</VirtualHost>
※https://www.second-server.com使用時は以下も追記
<VirtualHost *:443>
ServerName www.second-server.com:443
DocumentRoot /var/www/html/second
ErrorLog logs/ssl_second_error_log
TransferLog logs/ssl_second_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+
AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+
3DES:!aNULL:!MD5:!DSS
(SSLCipherSuiteから:!DSSまで1行で記述)
SSLHonorCipherOrder on
SSLCertificateFile /etc/letsencrypt/live/second-server.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/second-server.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/second-server.com/chain.pem
<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/var/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch “MSIE [2-5]” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”
Header always set Strict-Transport-Security “max-age=15768000”
</VirtualHost>
●SSL設定有効化
systemctl restart httpd