WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

デフォルトバーチャルホストを無効にする

サーバー構築も一段落してきて、だんだんネタがなくなってきました。なので、今後は細かい Tips なんかも書いていこうかと思っています。その第一弾として、今日は Apache のデフォルトバーチャルホスト("/etc/apache/"vhosts.d/00_default_vhost.con" で定義されているもの)を無効にする方法をご紹介します。

Apacheバーチャルホストとして定義されていないホスト名によるリクエストを受け取った場合、最初に定義されたバーチャルホストがアクセスされたと解釈します。つまりデフォルトの状態では、"00_default_vhost.conf" で定義したホストが表示されてしまうわけです。"/var/www/localhost/htdocs" にメインのサイトを構築するのならよいのですが、そうでない場合は問題になります。"/etc/apache/"vhosts.d/00_default_vhost.con" を書き換えるという手もありますが、どうせなら無効にして新たにホストを定義するほうがよいでしょう。

デフォルトバーチャルホストを無効にする

"00_default_vhost.conf" の中を覗いてみると、ホスト定義全体が <IfDefine DEFAULT_VHOST> というディレクティブで囲まれています。つまり、DEFAULT_VHOST というシンボルが定義されていなければ、デフォルトバーチャルホストは無効になるわけです。

このシンボルは、"/etc/conf.d/apache2"APACHE2_OPTS という設定で定義されています。インストール直後の状態では、この設定は以下のようになっているはずです。

APACHE2_OPTS="-D DEFAULT_VHOST"

これを空文字にすれば OK です。

APACHE2_OPTS=

もし他のオプションが追加されていた場合は、"-D DEFAULT_VHOST" の部分だけを削除してください。

その後、Apache を再起動すればデフォルトバーチャルホストが無効になります。

/etc/init.d/apache2 restart

この後、定義されていないホスト名によるリクエストが来た場合には、定義されているバーチャルホストのうち優先度がもっとも高いもの(ホスト定義ファイル名の最初の 2 桁の数字が最も小さいもの)が使用されます。ですので、デフォルトバーチャルホストとして使用したいバーチャルホストの優先順位がもっとも高くなるように、あらかじめ設定しておきましょう。

未定義ホストへのアクセスを禁止する

もし、バーチャルホストとして定義していないホスト名へのアクセスを禁止したい場合は、ダミーのデフォルトバーチャルホストを定義して、そこへのアクセスを完全に禁止するのが良いと思います。

例えば、"01_dummyhost_vhost.con" などのファイル名で以下のようなホスト定義を作成します。

<VirtualHost *:80>
    ServerName dummy
    <Location />
        Order deny,allow
        Deny from All
    </Location>
</VirtualHost>

他のバーチャルホストの優先順位は 02 以下になるようにしてください。これで Apache を再起動すれば、定義されていないホスト名によるアクセスや IP アドレスによるアクセスに対しては、403 Forbidden のエラーが返るはずです。

これで、デフォルトバーチャルホストが自由に定義できるはずです。複数のバーチャルホストを定義する際には、活用してください!(^^)

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles