トップページコラム > > Apacheのバーチャルホストで使えるディレクティブ



Apacheのバーチャルホストで使えるディレクティブ

作成日: 2012年6月6日
更新日: (なし)

名前ベースのバーチャルホスト

ある稼働中のApache Webサーバーに名前ベース(Nameベース)のバーチャルホストの設定を加えることになりました。 IPベースではなくて名前ベースのバーチャルホストになったのは、サーバーにIPアドレスを追加できなかったためです。 そのWebサーバーのhttpd.confはメイン・サーバーの記述だけで動かしていましたが、バーチャルホストの設定をすることになって元々あったメイン・サーバーの記述も見直すことになりました。

名前ベースのバーチャルホストの場合、メイン・サーバーとバーチャルホストが同じIPアドレス(ポート)を使っていればメイン・サーバーの記述は機能しなくなります。 一番最初に記述した<VirtualHost></VirtualHost>の記述がデフォルトのサーバーになるので、元々のメイン・サーバーの記述もバーチャルホストに移してやる必要があります。

見分け方

RCチップの画像

メイン・サーバーに記述していたディレクティブをバーチャルホストに移すのですが、どれを移せてどれが移せないのかを見分けないといけません。 本題はその見分け方です。 ズバリ、答えはApacheドキュメントにあります。

左の画像はApache Webサーバー 2.0のドキュメントです。 その中にある各ディレクティブの仕様となるコンテキストの説明です。 内容はこの通りで、各ディレクティブの「コンテキスト」の箇所に「バーチャルホスト」と書かれていれば、バーチャルホストで使用できるということです。 「サーバー設定ファイル」とだけ書かれていればバーチャルホストでは使用できません。

各ディレクティブのコンテキストの値はディレクティブ クイックリファレンスから一つずつ地道に調べていきます。 数は多いでしょうが、httpd.confを全てあさっても2時間ほどで調べきれるはずです。

RCチップの画像

例えば、Scriptディレクティブではコンテキストに「サーバー設定ファイル、バーチャルホスト、ディレクトリ」と書かれています。 従って、このディレクティブはバーチャルホスト、つまり、<VirtualHost></VirtualHost>の中で使用できるということです。

言い換えると、このディレクティブはサーバー設定ファイル、バーチャルホスト、ディレクトリのどこに記述しても良いということでもあります。

ちなみに、「サーバー設定ファイル」はメイン・サーバーを含むグローバルの領域で行う記述にあたり、「ディレクトリ」は<Directory></Directory>のことです。

RCチップの画像

もう一つの例はServerLimitディレクティブです。 これのコンテキストには「サーバー設定ファイル」としか書かれていません。 ということは、バーチャルホストでは使用できないということになります。

ほとんどのディレクティブはバーチャルホストで使用できますが、やはり、ServerLimitディレクティブのように使用できないものもあります。 これはコツコツ確認していくしかありません。 私が見直しを行った環境のhttpd.confでは、以下のディレクティブがバーチャルホストで使用できませんでした。

  • User(UNIX/Linuxのみ)
  • Group(UNIX/Linuxのみ)
  • TypesConfig
  • ServerTokens
  • CoreDumpDirectory

更新履歴

更新日 更新内容
2012年6月6日 新規作成