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
CodeReadingWiki 改造版でソースコード解読

etherさん作成のCodeReadingWiki が、ソースコードを読むのにす …

no image
Suicaでネット決済@モバイルSuica

モバイルSuicaってネット決済できるみたい。 決済方法を見ると、ショッピングサ …

no image
screenコマンド@cygwin with ck

cygwinのターミナルck上でscreenを使用しようとすると、デタッチ後にア …

no image
Windowsのtelnetコマンドの文字コード@Windows XP

限られた環境で、ターミナルのソフトにWindowsのtelnetしかない場合、t …

no image
JavascriptエンジンRhinoを入れてみる@WindowsXP

Ajaxの実装や、OpenOfficeなどのマクロ用、ThunderbirdやF …

no image
Windows 10の強制アップデート・再起動を無効にする

Windows 10 Proでは、Windowsが強制的にアップデートされ、ほっ …

no image
findでのファイル名or検索 and検索

findは色々な条件を指定してファイルを検索できます。or検索する場合は -or …

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

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

no image
すでに同名のdebパッケージがインストールされているか確認する@Ubuntu 14.04

リポジトリにはまだ登録されていないパッケージを手動でdpkgを使ってアップデート …

no image
Google Music の文字化け対策まとめ

まだ日本ではサービス開始されていませんが、Google Music が便利そうな …