1つの IPアドレスで複数のサイトを利用する

今使用しているサーバに、もう 1つ別のアプリをおくことになりました。すでに、http://localhost/ のような URL で動いちゃってるのがあるので、ポートを指定して別のサイトを表示させるようにします。また、アクセスログも別にはかれるようにしたいです。
1つのIPで複数のSSLサイトを運用する方法 を参考にすると、Apache の設定で VirtualHost を新しく作成すればできそうです。
今回設定したいのはSSL サイトなので、/etc/httpd/conf/httpd.conf ではなく、/etc/httpd/conf.d/ssl.conf をいじります。ポートは 443 が使用済みなので、444 として作成します。(あいてそうなポートを適当に。)

  • 上記サイトを参考に、/etc/httpd/conf.d/ssl.conf を下記のように編集します。
  • IP アドレスは、192.168.XX.XX としておきます。
Listen 443	# この行はもともとあるので、下に追加。
Listen 444
NameVirtualHost 192.168.XX.XX:443
NameVirtualHost 192.168.XX.XX:444


あとは、もともとあった VirtualHost ディレクティブをコピーして、DocumentRoot と出力されるアクセスログの設定を変更すれば OK です。ssl.conf の一番下に追加してください。デフォルトだと、 みたいになってますが、とりあえず参考にしたサイトにならって、既存サイトのほうも書き方を変えてみました。

  • ログのファイル名は先頭に hoge_ をつけることにします。
  • DocumentRoot は /var/www/hoge/public とします。
  • デフォルトの設定から変更したところを赤字にしておきます。


DocumentRoot "/var/www/hoge/public"

ErrorLog logs/hoge_ssl_error_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
TransferLog logs/hoge_ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol -ALL +SSLv3 +TLSv1
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key


    SSLOptions +StdEnvVars


    SSLOptions +StdEnvVars


SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/hoge_ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"



それぞれのサイトで別のドメインを持っている場合は、VirtualHost ディレクティブの中に、ServerName の設定も必要です。今回は、公開しているサーバじゃないので IP そのまま表示しちゃってます。なので、アクセスするときは、http://192.168.XX.XX/ (既存サイト。:443 をつけても同じ。)か、http://192.168.XX.XX:444/ (追加したサイト)のような感じでできます。