web サーバ (Apache/2.0) の設定
≪ previous next ≫

U.3.メインサーバーのディレクティブ

 httpd.conf のメインサーバーに関する主なディレクティブを次に挙げる。
※ メインサーバーに関するディレクティブの内、パスワード認証アクセス制御CGI に関するものは別途まとめた。

U.3.1.User と Group

 子プロセスの動作権限を、ユーザー属性、グループ属性で指定する。

User UserID
  • default : apache
  • 子プロセスのユーザー属性を、その名称または番号で指定する。

Group GroupID
  • default : apache
  • 子プロセスのグループ属性を、その名称または番号で指定する。

U.3.2.ServerAdmin

 エラー メッセージに含めるメールアドレスを指定する。

ServerAdmin e-mail_address
  • default : root@localhost
  • Internal Server Error 等の表示の際、問い合わせ用のメール アドレスとして使用される。

U.3.3.ServerName

 サーバーが自分自身を示すホスト名とポート番号を設定する。

ServerName HostName[:port]
  • default : new.host.name:80
  • HostNameFQDN 形式で記述する。
    ※ ただし FQDN 末尾のドット ( .) は省略できる。
  • HostName はリダイレクトする URL を生成する際のホスト名として使用される。
  • 実際のマシン名と異なる設定が可能。
    例えばマシン名が es3.project.ed.jp で web サーバー名をエイリアスで www.project.ed.jp としている時は次のように設定する。
    ServerName www.project.ed.jp:80
  • ServerName ディレクティブで HostName が指定されていないときは、サーバーは IP アドレスから逆引きを行なうことでホスト名を検索する。
  • ポート番号を指定しない場合は、リクエストが到着しているポート番号が使用される。
  • 名前ベースのバーチャルホストを運用する場合は、<VirtualHost> セクション内に ServerName ディレクティブを設定して、当該バーチャルホストのホスト名 (FQDN) を指定する。

U.3.4.DocumentRoot

 httpd によるファイルの提供元となるディレクトリを指定する。

DocumentRoot directory
  • default : "/var/www/html"
    ※ ダブルクォーテーションは省略可。
  • directory には、ServerName ディレクティブで指定したホスト名へのリクエストに対して、具体的に参照するディレクトリを指定する。
    ※ 指定するディレクトリの末尾にスラッシュ (/) を付けてはならない。
  • 例えばデフォルト設定であった場合、http://www.project.ed.jp/index.html へのリクエストは
    /var/www/html/index.html が参照される。
  • Alias, VirtualHost などのディレクティブがマッチしない限り、サーバーは要求された URL から DocumentRoot 設定値を参照してパスに変換し、ドキュメントへのパスを作成する。
  • リクエストされた URL がユーザーのホームディレクトリの場合は、UserDir ディレクティブが参照される。

U.3.5.UserDir

 ユーザーのドキュメントへリクエストがあった場合、参照の起点となる (ユーザーのホームディレクトリ内の) ディレクトリ名を指定する。

UserDir directory
  • default : disabled
    ユーザーの web ページも参照可能とするのであれば、一般的な public_html を推奨する。
  • directory は次のいずれかのパターンを指定する。
    • disabled
       enabled で明示的に指定されたユーザー (UserList) を除いて、ユーザー名からディレクトリ名への変換を off にする。
    • disabled UserList  (※ UserList : スペースで区切ったユーザー名のリスト)
       UserList に載ったユーザーに対し、それが enabled の UserList でリスティングされたユーザーであってもディレクトリ名への変換を行わない。
    • enebled UserList  (※ UserList : スペースで区切ったユーザー名のリスト)
       UserList に載ったユーザーに対し、変換 off のグローバル設定 (disabled) がされている場合でもディレクトリ名への変換が行われる。
      ただしそのユーザー名が、disabled の UserList にリスティングされている場合は変換されない。
    • ディレクトリ名  (※ ユーザーのホームディレクトリにあるディレクトリ名を指定)
       enabled, disabled どちらのキーワードも記載がない場合は、引数はファイル名パターンとして扱われ、ディレクトリ名への変換時に使用される。
      http://www.project.ed.jp/~client/subdir/test.html へのリクエストは次のように変換される。
      ディレクティブの設定 参照されるファイル
      UserDir public_html → /home/client/public_html/subdir/test.html
      UserDir /usr/web → /usr/web/client/subdir/test.html
      UserDir /home/*/www → /home/client/www/subdir/test.html
  • UserDir ディレクティブを未設定とした場合、デフォルトで public_html が設定される。

U.3.6.DirectoryIndex

 ファイル名を指定しないリクエストに対して、検索対象となるリソースのリストを設定する。

DirectoryIndex Local_URL_List
  • default : index.html
  • Local_URL_List には、リクエストされたディレクトリに対する相対パスを指定する。
  • 次のように指定した場合、ファイル名の無い (ディレクトリ名までの) リクエストに対して index.html, index.htm, /cgi-bin/index.cgi の順に検索する。
    DirectoryIndex index.html index.htm /cgi-bin/index.cgi
  • 指定されたリソースが存在しない時の動作は次の通り。
    • Options Indexes が設定されている場合  : ファイル名一覧を返す。
    • Options Indexes が設定されていない場合 : エラーを返す。

U.3.7.ErrorLog

 web サーバーで発生したエラーを記録するファイル名を指定する。

ErrorLog filename|syslog[:facility]
  • default : logs/error_log
    ※ /etc/httpd/logs はシンボリック リンクとなっている。 ファイルの実態は /var/log/httpd にある。
  • filename
    エラー記録用のファイル名を指定する。
    filename の先頭がスラッシュ (/) でない場合は ServerRoot からの相対パスとして認識され、スラッシュの場合は絶対パスとして認識される。
  • syslog
    syslogd(8)を利用してログを生成できる。
    この時 httpd のエラーログはシステムログとして /var/log/messages に記録される。
    ただし、システムが syslog をサポートしている必要がある。
    ※ Red Hat Linux ES 3 は、syslog をサポートしている。

U.3.8.LogFormat

 アクセスログの記録形式を定義する。

LogFormat format [nickname]
  • default :
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent
  • format
    フォーマット文字列とエスケープ文字で記録形式を設定する。
    • 【 フォーマット文字列 】
       % 記号で始まる文字列で、アクセスデータ中の特定情報に変換される。
      主なフォーマット文字列は以下の通り。
      フォーマット文字列説明
      %bHTTPヘッダ以外のバイト数
      %hリモートホスト
      %rリクエストの最初の行
      %t時刻
      %uリモート ユーザー
      %Uリクエストされた URL パス
    • 【 エスケープ文字 】
       バックスラッシュ (日本語キーボードでは \) とそれに続く制御文字で構成され、
      \n (復改)、\t (タブ) 等がある。
       また、制御文字そのものを出力する場合にも \" (" の出力)、\\ (\ の出力) のように記述する。
  • nickname
    format で設定した記録形式に名称を付与する。 (名称に % を含めることはできない)
    例えば、
      LogFormat "%h %l %u %t \"%r\" %>s %b" common
    と記述した場合、記録形式 "%h %l %u %t \"%r\" %>s %b" は他のディレクティブから common で参照可能となる。
  • nickname は省略可能。
    省略した場合、ここで設定した記録形式は、TransferLog ディレクティブと共に使用される。

U.3.9.CustomLog

 アクセスログを収集するファイル名と記録形式を指定する。

CustomLog filename|pipe format|nickname
  • default : logs/access_log combined
    ※ /etc/httpd/logs はシンボリック リンクとなっている。 ファイルの実態は /var/log/httpd にある。
  • filename|pipe
     アクセスログを記録するファイル名を、filenameで指定、もしくはログ情報を受け取るプログラムを pipe で指定する。
    • filename の先頭がスラッシュ (/) でない場合は、ServerRoot からの相対パスとして認識され、スラッシュの場合は絶対パスとして認識される。
    • pipe の記述は、先頭にパイプ文字 "|" を付加したプログラム名で、"|プログラム名" となる。
  • format|nickname
     記録形式を format で指定、もしくは LogFormat ディレクティブで定義した、記録形式の nickname を指定する。
    ※ format の記述方法は LogFormat ディレクティブの format を参照。
  • httpd.conf のデフォルト設定は、
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    CustomLog logs/access_log combined
    となっている。 これは次の記述と同じ効果となる。
    CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

U.3.10.TransferLog

 アクセスログを収集するファイル名を指定する。

TransferLog filename|pipe
  • default : ディレクティブの記述なし
  • CustomLog を設定した場合は不要。
  • ログの記録形式は、nickname を省略した LogFormat ディレクティブの format が適用される。
  • filename | pipe
    CustomLog ディレクティブの filename | pipe を参照。

  • CustomLog ディレクティブ あるいは TransferLog ディレクティブのどちらかをセットしないと、アクセスログは記録されない。
  • ユーザーのホームディレクトリへのアクセスログは、メインサーバーの設定に従う。
  • バーチャルホスト設定時、<VirtualHost> ディレクティブ内に CustomLog ディレクティブまたは TransferLog ディレクティブを設定しない場合、メインサーバーの CustomLog ディレクティブや TransferLog ディレクティブの設定に従う。

U.3.11.ServerSignature

 エラー出力等の最下行に追加するフッタ (サーバーのバージョン、ServerNameServerAdmin 等) を制御する。

ServerSignature On|Off|EMail
  • default : On
  • パラメータはそれぞれ次の動作指定となる。
    • On
       応答メッセージの最下行に、サーバーのバージョン、ServerName ディレクティブの設定値を追加する。
    • 【 エラーメッセージの例 】
      Internal Server Error
      The server encountered an inernal error or misconfiguration and ....
      Please contact the server administrator, root@project.ed.jp and inform them .....
      More information about this error may be available in the server errorlog.

      Apache/2.0.46 (Red Hat) Server at www.project.ed.jp Port 80
    • Off
      応答メッセージにフッタを追加しない。
    • EMail
       On 設定時と同様のフッタが追加され、フッタ中の ServerName ディレクティブ設定値 (ホスト名) に、ServerAdmin ディレクティブ設定値 (メールアドレス) 宛のリンク (mailto:)が設定される。
    • ※ ホスト名 (上記 On の「エラーメッセージの例」最下行にある www.project.ed.jp) をクリックすると、
         ServerAdmin ディレクティブ設定値 を宛先としたユーザーのメールソフトが起動する。
  • web サーバーのアプリケーション名 (Apache) やバージョン情報が表示されてしまうので、セキュリティを考慮すると Off にすることが望ましい。



≪ previous [[ web サーバ - Apache/2.0 の設定 ]] next ≫