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
Firefox検索フォームに検索履歴ボタンを追加する@Firefox 3.0

Firefox の検索欄は、検索履歴を覚えてくれ、↓を押すと履歴が出てきます。し …

no image
Google IME (mozc) のインストール@Fedora 17

Google製のLinux用IME、Mozc をインストールしてみた。 # yu …

no image
PostgreSQL 9.0 レプリケーション機能を使ってみる @ RHEL5 x86_64

PostgreSQL 9.0 がリリースされましね。早速目玉機能の一つである、レ …

no image
py2exeでpythonをWindowsの実行ファイル形式にする@Windows 7 64bit

python でちょこっと作プログラムを誰かに渡したいとき、相手にpython入 …

no image
Arrows Tab LTE F-01D をICS (4.0) にアップデート

やっとでました。Arrows Tab の 4.0アップデート。 早速アップデート …

no image
XREAでのWordPressのファイルアップロード

初めてファイルアップロード機能を使おうとしたら動かなかったのでメモ。 wp-ad …

no image
シェルで逐一時間表示@bash

デバッグを目的に、 逐一コマンド実行時に時間を表示させたい場合があります。 $ …

no image
Tracにガントチャートプラグイン導入@Debian Etch

Tracの導入の記事で導入したTracにガントチャートプラグインを導入してみまし …

no image
Tracの導入@Debian etch

Tracはメジャーなオープンソースのバグトラッキングシステム。 Subversi …

no image
スピーカーのアイコンに×がつく@Windows 7

Windows 7を起動すると、音声は問題なく出ているのに、タスクトレイにあるス …