Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

ApacheのNameVirtualHostのデフォルトサイト設定(含SSL)@CentOS 5

      2011/10/08

CentOS 5 のApacheで、名前ベースのバーチャルホストを構築してみた。

CentOS 5では、基本設定は /etc/httpd/conf/httpd.conf 、追加設定や追加モジュール設定は /etc/httpd/conf.d/ ディレクトリ配下に ~.conf というファイル名で置くような作りになっているので、新しいバーチャルホストもここに置くようにしたい所です。

しかし、バーチャルホストの設定は、一番最初に定義したものが、デフォルトサイトとして使われるようで、IPアドレスでアクセスした場合はこのバーチャルホストのページが表示されてしまいます。

よって、Include文でconf.d 配下のファイルを読み取る前に、デフォルトのバーチャルホストを以下のように定義してあげればOK。

# vi /etc/httpd/conf/httpd.conf

~ 省略 ~
NameVirtualHost *:80
<virtualhost *:80>
 ServerAdmin root@localhost
 DocumentRoot /var/www/html
 ServerName 192.168.0.10          ← サーバのIP または ドメイン名
</virtualhost>
#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf            ← この行の前に書く
~ 省略 ~

あとは、conf.d 配下に以下のように、サイト毎のバーチャルホストを定義するだけです。例えば、http://www.hoge.net/ というサイトを作りたいならば、/etc/httpd/conf.d/hoge.conf  ファイルを作って、以下のように記述するだけです。

# vi /etc/httpd/conf.d/hoge.conf

<VirtualHost *:80>
ServerAdmin root@hoge.net
DocumentRoot /home/www/hoge
ServerName www.hoge.net:80
ErrorLog logs/hoge-error_log
CustomLog logs/hoge-access_log combined

<Directory "/home/www/hoge">
Options FollowSymLinks
Order allow,deny
Allow from all
AllowOverride All
</Directory>
</VirtualHost>

ちなみに、Apache 2.2.12 以降では、SNI(Server Name Indication) が実装され、https (SSL) のサイトでもバーチャルホストを定義できます。SSL のバーチャルホストも、通常のバーチャルホストと同様最初に定義されたサイトがデフォルトになるようです。ただし、CentOS 5 のSSLの設定は、すでに conf.d ディレクトリ配下に ssl.conf として外だしされています。そのため、このssl.conf をデフォルトのサイトにしたい場合、このファイルが最初に読み込まれる必要があります。しかし、他のバーチャルホスト(例えばhoge-ssl.conf )を置いた場合、”h” は “s” よりもアルファベット順が先のため、ssl.conf よりも先にhoge-ssl.conf が読み込まれてしまいます。

よって、解決方法として、 ssl.conf を 00-ssl.conf といった名前に変更してあげれば、大抵のファイルよりも先に読み込んでくれます。なお、80ポートの時と同様、SSLののバーチャルホストを使う場合、NameVirtualHostの定義が必要になるので注意してください。

# vi /etc/httpd/conf/httpd.conf

NameVirtualHost *:80
<virtualhost *:80>
 ServerAdmin root@localhost
 DocumentRoot /var/www/html
 ServerName 192.168.0.10
</virtualhost>
NameVirtualHost *:443
#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf            ← この行の前に書く

SSLのバーチャルホスト追加。

# vi /etc/httpd/conf/hoge-ssl.conf

<VirtualHost *:443>
ServerAdmin root@hoge.net
DocumentRoot /home/www/hoge
ServerName www.hoge.net:443
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

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

CustomLog logs/hoge-ssl_access_log ssl-combined
ErrorLog logs/hoge-ssl_error_log

<Directory "/home/www/hoge">
 Options FollowSymLinks
 Order allow,deny
 Allow from all
 AllowOverride All
</Directory>
</VirtualHost>

上記はあくまでオレオレ証明書なので、ちゃんとした証明書が必要な場合は、別途設定が必要です。
なお、SSLのバーチャルホストは、対応したブラウザで見る必要があるらしいですが、最近のブラウザならほとんど対応しているようです。

 

参考 : http://builder.japan.zdnet.com/etc/20402262/

== 2011/5/7 追記 ==

httpdのRPMをアップデートすると、ssl.confを00-ssl.confにしていた場合、/etc/httpd/conf.d/ssl.conf というファイルが新しく作られてしまい、その影響でhttpdが起動できなくなってしまいますので、こういう時は ssl.conf を削除または .conf 以外のファイル名にリネームしてあげてください。

 - IT技術 ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
グループへのユーザの追加@Linux

グループへユーザを追加する方法。 # gpasswd -a user group …

no image
radikoを出張先で聞く@Windows 7 or XP Professional 以上

普段は自宅が関東にあり、インターネットラジオradikoを聞いていたのですが、出 …

no image
CDやDVDの中身が見れない@Windows Vista

最近悪名高いWindows Vistaを使っているのですが、一通り設定や必要そう …

no image
blu-rayの再生でちらつく@Acer AS 1410 with PowerDVD 10 on Windows 7

Acer AS 1410 で blu-ray を再生してみました。 blu-ra …

no image
fileコマンドの判定方法@CentOS 5.4

あるファイルが何のファイルかを判別するためのコマンドfileコマンドがありますが …

no image
VirtualBox 5で、USBメモリ全体をディスクとして使う@Windows 10

管理者権限でWindowsのコマンドプロンプトを起動し、以下のようにUSBメモリ …

no image
iptablesの設定を保存し起動時に自動的に反映する@Ubuntu 12.04 server

Ubuntu の iptables の設定を保存するには、iptables-pe …

no image
Windows 10のインストールイメージ(ISO)をダウンロード

Windows 10 のインストールメディア(ISO)のダウンロードツールが公開 …

no image
POP3 + Maildir形式@Debian Etch

メールの保存形式をmboxからMaildirに変更したところ、qpopperがM …

no image
adblock plusで正規表現を使う@Firefox

広告削除ツールとして有名なFirefoxアドオンのaddblock plusで正 …