かべちゃんのウェブサイト
設定
ホスト設定

ホスト設定(<host>)

<host>は、type属性の値によって、 メインホスト/バーチャルホストの設定を行います。 type 属性が "main"の場合は、メインホストの設定となります。 "virtual"の場合は、バーチャルホストの設定になります。 使用可能な要素名は、バーチャルホストの設定でも共通です。

<server-name>

クライアントに返すサーバのホスト名を設定します。 必ず DNS に登録された名前を使用してください。

<server-admin>

サーバ管理者の電子メールアドレスを設定します。

<error-log>

サーバのエラーログのパスを設定します。 "/" で始まる場合は絶対パスとみなされ、 それ以外は、 <server-root>からの相対パスとなります。 また、"|" で始まる場合は、コマンドへのパイプとなります。 ":" で始まる場合は、ネットワーク経由の出力となります。

例として、 <error-log>|logger</error-log> は、syslog 経由でエラーログを出力します。また、 <error-log>:remote:10514</error-log> は、remote ホストのポート10513番にエラーログを送信します。

<access-log>

サーバのアクセスログのパスを設定します。 "/" で始まる場合は絶対パスとみなされ、 それ以外は、 <server-root>からの相対パスとなります。 また、"|" で始まる場合は、コマンドへのパイプとなります。 ":" で始まる場合は、ネットワーク経由の出力となります。

<document-root>

サーバホストのパブリックな HTML 文書などを置くトップディレクトリの絶対パスを指定します。

サーバのホスト名と管理者メールアドレスは、必須項目です。 それ以外の項目は、コンパイル時に組み込まれた標準値が省略時に適用されます。 ホスト設定の必要最小限の構造は、次のようになります。

記述例:

  <host type="main">
    <!--
      クライアントに返すサーバのホスト名を設定します。
      必ず DNS に登録された名前を使用してください。
    -->
    <server-name>www.example.com</server-name>
    <!--サーバ管理者の電子メールアドレス-->
    <server-admin>webmaster@example.com</server-admin>
    <!--サーバのエラーログの場所-->
    <error-log>/var/log/httpd-error.log</error-log>
    <!--サーバのアクセスログの場所-->
    <access-log>/var/log/httpd-access.log</access-log>
    <!--HTMLドキュメントを置くディレクトリを設定します-->
    <document-root>/usr/local/wyvern/htdocs</document-root>
  </host>

<user-dir>

ユーザ個人のHTML文書用のディレクトリ名を指定します。 ユーザのホームディレクトリに <user-dir> で指定したディレクトリを作成することで、ユーザもウェブページを公開できます。 http://www.example.com/~user/index.html でユーザのウェブページにアクセスできます。


  <host type="main">
    ...
    <user-dir>public_html</user-dir>
    ...
  </host>

<directory-indexes>

URL がディレクトリ名で要求された場合に、 ディレクトリに補完するファイル名の候補を指定します。 「,」で区切ることで複数のファイル名を指定できます。 ただし、「,」の前後に空白を挿入してはダメです。


  <host type="main">
    ...
    <directory-indexes>index.htm,index.html</directory-indexes>
    ...
  </host>

<auto-indexing>

「on」に設定した場合、 mod_autoindex.so モジュールを利用している場合は、 <directory-indexes> で指定したファイルが存在しないときに、動的にページ生成を行います。 対象のディレクトリ内に大量のファイルがある場合は、 動作が非常に遅くなることがあります。


  <host type="main">
    ...
    <auto-indexing>off</auto-indexing>
    ...
  </host>

シンボリックリンクファイルを無条件にたどるかどうかのフラグです。 このフラグを有効にした場合、潜在的なセキュリティ問題を抱えます。 「off」とした場合は、<server-root><document-root><user-dir> で指定されたディレクトリ内のシンボリックリンクだけに制限されます。


  <host type="main">
    ...
    <follow-symlinks>off</follow-symlinks>
    ...
  </host>

<default-type>

ファイルの suffix が不明な場合に用いるメディアタイプを指定します。


  <host type="main">
    ...
    <default-type>text/plain</default-type>
    ...
  </host>

<add-type>

mime.typesファイルを編集せずに、新しいメディアタイプを追加します。


  <host type="main">
    ...
    <!--
      サフィックスが cgi のファイルであれば、
      どこにあっても CGI コマンドとして実行されます。
    -->
    <add-type>
      <media-type>application/x-httpd-cgi</media-type>
      <suffix>cgi</suffix>
    </add-type>
    ...
  </host>

<error-document>

Client Error (4xx) と Server Error (5xx) のエラーメッセージをカスタマイズできます。 ここで、エラードキュメントは、 <document-root> からのパスとなります。 そのため、バーチャルホスト機能を用いた場合は、 各バーチャルホスト毎の <document-root> 以下に作成しなければなりません。


  <host type="main">
    ...
    <!--
      ファイルが見つからない場合のエラーメッセージとして、
      「見つからないよ〜」とエラーページに出力します。
    -->
    <error-document>
      <code>404</code>
      <string>見つからないよ〜</string>
    </error-document>
    <!--
      ファイルが見つからない場合のエラーメッセージに
      "/error/missing.html" を使用します
    -->
    <error-document>
      <code>404</code>
      <file>/error/missing.html</file>
    </error-document>
    <!--ファイルが見つからない場合、Google に直接リダイレクトさせます-->
    <error-document>
      <code>404</code>
      <uri>http://www.google.com/</uri>
    </error-document>
    ...
  </host>

<map>

パスの写像を設定します。 写像の動作は、type 属性によって指定します。 属性は、次の値のいずれかを指定します。

redirect
指定したパスをリダイレクトします
alias
指定したパスをサーバ内の絶対パスにマッピングします
script
指定したパスをサーバ内の CGI スクリプト用の絶対パスにマッピングします

  <host type="main">
    ...
    <!--
      サーバ内に存在しないドキュメントの再配置場所をクライアントに返答する
      場合に redirect を利用してパスの写像を行います。
    -->
    <map type="redirect">
      <path>/bar</path>
      <uri>http://elsewhere/foo/bar</uri>
    </map>
    <!-- パスの写像を行います -->
    <map type="alias">
      <path>/manual/</path>
      <uri>/usr/local/wyvern/manual/</uri>
    </map>
    <!-- CGIスクリプト専用のディレクトリのパスを設定します -->
    <map type="script">
      <path>/cgi-bin/</path>
      <uri>/usr/local/wyvern/cgi-bin/</uri>
    </map>
    ...
  </host>

バーチャルホスト設定

<host> の type 属性を "virtual" とするだけで、 設定内容はホスト設定と同じです。

記述例:

  <host type="virtual">
    <server-name>www.virtual.domain</server-name>
    <server-admin>webmaster@virtual.domain</server-admin>
    <error-log>/var/log/httpd-virtual-error.log</error-log>
    <access-log>/var/log/httpd-virtual-access.log</access-log>
    <document-root>/virtual/path/here</document-root>
    ...
  </host>