設定ファイルのディレクティブ一覧


戻る

設定ファイルの書式

esehttpdはapacheとほぼ同等の書式の設定ファイルを使います。デフォルトではesehttpdは起動時に設定ファイルとして/etc/esehttpd/esehttpd.confを読み込みますが、コマンドライン引数で変更することもできます。

設定ファイルの各行は、ディレクティブとその引数から成っています。引数がどのように解釈されるかは、各ディレクティブによって異なります。行頭の空白は無視され、また行頭が'#'文字で始まっている行は無視されます。

特定のディレクトリなど、サーバの一部分だけの設定を変更するには、<VirtualHost>...</VirtualHost>, <Directory>...</Directory>, <FilesMatch>...</FilesMatch>, <Limit>...</Limit>に囲まれた行(セクション)にそのディレクティブを書きます。サーバ全体にかかわるディレクティブはこれらのセクションの外側に書きます。

ディレクティブの引数がファイル名やパス名、正規表現などをあらわしている場合は、引数をダブルクォート『""』で括ることが出来ます。ダブルクォートの内側ではエスケープ文字としてバックスラッシュ『\』を使います。『\"』はダブルクォート文字自身をあらわし、『\\』はバックスラッシュ文字自身をあらわします。


サーバ全体の設定

ServerRoot DIRNAME

Esehttpdの設定ファイルやコンテンツなど、全ての関連するファイルを含んでいるディレクトリを指定します。設定ファイル内で相対パス名を使った場合には、それらは全てこのDIRNAMEからの相対パスと見倣されます。デフォルトの値はコンパイル方法によって変わってきます。

BindAddress ADDRESS

サーバがバインドするローカルアドレスを指定します。これを設定しなかった場合は任意のアドレス宛の接続要求を受け入れます。通常は設定する必要はありませんが、特定のアドレス宛の接続要求だけを受け付けるようにしたい場合に設定してください。

User NAME

サーバを実行するユーザの名前を指定します。esehttpdはroot権限で起動して設定ファイル等を読み込んだ後、ここで指定したユーザに実効ユーザIDを変更します。安全のために、ここで指定するユーザはroot権限を持っていない通常のユーザである必要があります。

Group NAME

サーバを実行するグループの名前を指定します。Userディレクティブと同様です。

MaxFiles NUMBER

サーバプロセスが同時に開くことのできるファイルの数の最大値を指定します。通常は指定する必要は有りませんが、同時に大量のクライアントからの接続を受け付けたい場合にこれを指定します。

StartServers NUMBER

起動するサーバプロセスの数を指定します。指定しない場合は1になります。esehttpdは1つのプロセスで複数のクライアントからの接続を受け付けることができるため、ここで指定する値はクライアントの最大接続数とは直接は無関係です。通常は無設定で1プロセスで起動すれば十分ですが、SMPシステム(2CPU以上のシステム)ではこれに2以上の値を指定すると性能が上がります。2プロセス以上にした場合は、クライアントと通信するプロセス(ワーカプロセス)とは別にさらにもう1つ、監視プロセスが生成されます。監視プロセスは、ワーカプロセスが異常終了したときにこれを再起動するなどの役割を担います。

ChangeRoot DIRNAME

Userで指定したユーザに権限を落す直前に指定したディレクトリへchrootします。これを指定しなかった場合はchrootしません。このディレクティブによってchrootするように設定した場合は、設定ファイルの中のいくつかのディレクトリ等のパス名が、chrootするディレクトリのサブディレクトリになっていなければならないことに注意してください。例えば/var/wwwにchrootしたときは、DocumentRootディレクティブには/var/www/htmlのように/var/www/のサブディレクトリでなくてはなりません。また<Directoryで指定するディレクトリ名もchrootするディレクトリのサブディレクトリでなくてはなりません。この条件を満たしてない場合は、エラーになります。

ListenBacklog NUMBER

クライアントからの接続要求を保留する待ち行列(listen backlog)の長さを指定します。これはサーバのパフォーマンスに影響するパラメータで、通常は設定する必要はありません。

SendBufferSize NUMBER

TCP送信バッファのサイズを指定します。これはサーバのパフォーマンスに影響するパラメータで、通常は設定する必要はありません。

RecvBufferSize NUMBER

TCP受信バッファのサイズを指定します。これはサーバのパフォーマンスに影響するパラメータで、通常は設定する必要はありません。

FileCacheSize NUMBER

サーバに内蔵されたファイルキャッシュの最大エントリ数を指定します。ファイルキャッシュはここで指定した数までのファイルをマップしたまま保持しますので、システムで利用できるファイル数の最大値が少ない場合はこの値もあまり大きくできません。デフォルトは300です。

FileCacheThreshold NUMBER

キャッシュ対象となるファイルの大きさの最大値を指定します。ここで指定した値より大きなサイズのファイルはキャッシュされません。0を指定するとどんなに大きなファイルでもキャッシュ対象になります。デフォルトは0です。

SendCGIErrors (On|Off)

CGIスクリプトの実行中にエラーが発生した場合に、エラーメッセージをクライアントに送るかどうかを設定します。CGIスクリプトのテストをする際にはOnにしたほうが便利ですが、セキュリティ上好ましくない場合にはOffにしてください。デフォルトではOffです。

MultipleAccept (On|Off)

Onにすると一度のイベントでacceptシステムコールを失敗するまで繰り返し実行します。これはパフォーマンスに影響するパラメータで、通常は設定不要です。デフォルトはOffです。

ForceLingeringClose (On|Off)

これをOnにすると、HTTP 1.0クライアントに対しても常にlingering closeを行うようになります。Offにすると、HTTP 1.1以降およびリクエストボディを持つHTTP 1.0リクエストに対してのみlingering closeを行います。デフォルトではOffです。

LingeringCloseLimit NUMBER

ハーフクローズした後にクライアントから読み込む最大のバイト数を指定します。小さくするとハーフクローズ後のレスポンスをクライアントが取り損なう可能性が高くなってしまい、逆に大きくするとサーバがDoS攻撃に弱くなります。デフォルトは65536です。

RequestHeaderLimit NUMBER

受け入れるリクエストヘッダの最大バイト数を指定します。これ以上のバイト数を読んでもヘッダの終端が発見できない場合は、esehttpdは即時に接続を切断します。あまりに小さいと長いURIなどを受け付けられなくなり、逆に大きくするとDoS攻撃に弱くなります。デフォルトは8192です。

RequestBodyLimit NUMBER

受け入れるリクエストボディの最大バイト数を指定します。Expect: 100-continueヘッダの無いリクエストかHTTP 1.0リクエストのリクエストボディがこの値を越えた場合は413 Request Entity Too Largeを返し、lingering closeを行います。Expect: 100-continueヘッダが有るばあいは417 Expectation Failedを返します。この値を小さくするとフォーム等で大きなデータが送れなくなり、逆に大きいとDoS攻撃に弱くなります。

ScriptEvalMax NUMBER

各プロセスがRubyスクリプトを実行する回数がこの数を越えたら、プロセスを終了・再スタートします。0を指定するとプロセスの終了・再スタートは行いません。この設定が効果があるのはStartServersに2以上の値を指定したときに限られ、StartServersが1の場合はScriptEvalMaxの設定は無視されます。

<VirtualHost HOSTNAME>

バーチャルホストを定義します。これと</VirtualHost>に挟まれた行にバーチャルホスト毎の設定を書きます。

バーチャルホスト毎の設定

バーチャルホストに関する設定をするには<VirtualHost></VirtualHost>に挟まれた行に以下のディレクティブを書きます。以下のディレクティブは<VirtualHost>の外側にも書くことができますが、その設定はいずれの<VirtualHost>にもマッチしない場合に有効になります。

Port NUMBER

サーバがHTTPクライアントからの接続を受け付けるポート番号を指定します。通常は80を指定します。これを指定しなかった場合は接続を受け付けません。

ServerName HOSTNAME

サーバのホスト名を指定します。指定しなかった場合はlocalhostになります。

PassEnv NAME [...]

CGIスクリプトに渡す環境変数を指定します。通常は設定する必要は有りません。

CustomLog FILENAME [LOGTYPE]

アクセスログファイルを指定します。通常はここで指定したファイルにアクセスログが書き込まれますが、StartServersに2以上の値を指定した場合には、ここで指定したファイル名にさらにプロセス番号のサフィックスが付いた名前のファイルに書き込まれます。LOGTYPEcommoncombinedのいずれかを指定します。commonを指定した場合にはCommon Logfile Formatに従った形式のログが出力されます。combinedの場合はCommon Logfile Formatに加えて、User-AgentとRefererも記録されます。LOGTYPEを省略した場合にはcommonを指定したことと同じになります。

NoLog CODE [...]

これを設定すると、HTTPレスポンスコードがCODEであるような場合、アクセスログを記録しないようになります。CODEには403, 200, 304などの数字を指定します。複数指定することもできます。

DocumentRoot DIRNAME

ドキュメントを置くトップディレクトリを指定します。このディレクトリがそのサーバの'/' URIに対応します。

TypesConfig FILENAME

ファイルのサフィックスからMIME型を決定するための設定ファイルを指定します。デフォルトでは/usr/local/lib/esehttpd/conf/mime.types等(インストール方法によって変わってきます)になります。

ErrorDocumentDir DIRNAME

エラーメッセージを置くディレクトリを指定します。指定しなかった場合はサーバに組み込まれたデフォルトのメッセージが利用されます。

TimeOut SEC

クライアントがこれで設定した秒数のあいだ送受信をしなかった場合に接続を切断します。デフォルトは300秒です。通常は設定する必要はありません。

SSLPort NUMBER

サーバがSSLで暗号化されたHTTP接続を受け付けるポート番号を指定します。通常は443を指定します。これを指定しなかった場合はHTTPSリクエストを受け付けません。PortSSLPortのいずれも指定しなかった場合はそのサーバは何もおこないません。

SSLCertificateFile FILENAME

サーバの証明書を指定します。FILENAMEは証明書を含んだPEM形式のファイルでなくてはなりません。このディレクティブはSSLを利用するときには必須です。

SSLCertificateKeyFile FILENAME

サーバのRSAキーを指定します。FILENAMEはRSAキーを含んだPEM形式のファイルでなくてはなりません。もしこのディレクティブを指定しなかった場合には、SSLCertificateFileで指定されたファイルからRSAキーも読み取ろうとします。よって、SSLを利用するときにはこのSSLCertificateKeyFileで指定したPEMファイルかSSLCertificateFileで指定したPEMファイルのいずれかにRSAキーが含まれていなければなりません。

SSLCACertificateFile FILENAME

SSLクライアント認証に使用するCA(認証局)の証明書を指定します。これを設定すると、SSLVerifyClient requireが指定されたディレクトリにアクセス要求が来た際、このCAが発行した証明書を提示するようクライアントに要求し、正しい証明書を提示しなかった場合に接続を切断します。FILENAMEは証明書を含んだPEM形式のファイルでなくてはなりません。

SSLDHParamFile FILENAME

DHパラメータファイルを指定します。FILENAMEはDHパラメータを含んだPEM形式のファイルでなくてはなりません。もしこのディレクティブを指定しなかった場合には、SSLCertificateFileで指定されたファイルからDHパラメータも読み取ろうとします。もしSSLDHParamFileが指定されておらず、SSLCertificateFileで指定されたファイルにもDHパラメータが含まれていなかった場合には、DHを使った暗号は利用できなくなります。

SSLCipherSuite STRING

利用する暗号の種類のリストを指定します。STRINGに指定する文字列は、openssl ciphersと実行して得られる結果と同じ書式です。実際にサーバとクライアント間の通信で利用される暗号は、このリストに含まれるものの中からクライアントとネゴシエートして決められます。

Alias URI DIRNAME

指定したURI以下を特定のディレクトリにマップするようなエイリアスを設定します。

ScriptAlias URI DIRNAME [MODULENAME]

Aliasと同様、指定したURI以下を特定のディレクトリにマップしますが、さらにそのURIに対するハンドラをMODULENAMEに設定します。MODULENAMEが指定されなかった場合はcgi-scriptが指定されたことと同じになります。

<Directory DIRNAME>

ディレクトリセクションを定義します。これと</Directory>に挟まれた行にそのディレクトリ以下のファイルについての設定を書きます。

ディレクトリ毎の設定

特定のディレクトリ以下のファイルについての設定をするには、<Directory DIRNAME></Directory>で挟まれた内側の行に、以下で説明するディレクティブを書きます。ここでDIRNAMEは設定を施す対象となるディレクトリ名です。リクエストがあったファイルが複数の<Directory>にマッチする場合は、マッチするパスが最も長いものが有効になります。以下のディレクティブは<Directory>セクションの外側にも書くことができ、ファイルがいずれの<Directory>にもマッチしない場合にこの<Directory>セクションの外側に書かれた設定が有効になります。

AuthUserFile FILENAME

認証のためのユーザ名とパスワードが書かれたファイルを指定します。このファイルは付属のesepasswdコマンドで作成できます。

AuthName NAME

認証のためのrealmを指定します。ここで指定した名前は例えば、Webブラウザがユーザにパスワードの入力を促すときに出すプロンプトのタイトルとして利用されます。

AuthRequireSSL (On|Off)

このオプションをOnにすると、Basic認証を必要とするリクエストが非SSL接続で来た場合にリクエストを拒否するようになります(Forbiddenになります)。これは、Basic認証で生パスワードが洩れるのを防ぐ目的で利用できます。

DirectoryIndex FILENAME [...]

指定されたURIがディレクトリを指しているときに、ここで指定したファイルをそのディレクトリから探して見つかればそのファイルを送ります。複数のファイルが指定された場合は、指定された順に探して最初に見つかったものを返します。 このディレクティブで指定しない場合はindex.htmlが指定されたのと同じことになります。これらのファイルが見つからなかった場合、そのディレクトリの一覧表示が許可されている場合は一覧表示をおこない、許可されていなければ403 Forbiddenになります。

DefaultType MIMETYPE

デフォルトのMIME型をMIMETYPEにします。すなわち、AddTypeTypesConfigファイルを参照してもMIME型が判明しなかったファイルのMIME型がこれで指定されたものになります。

AddType MIMETYPE SUFFIX

拡張子がSUFFIXであるようなファイルのMIME型をMIMETYPEにします。このディレクティブは複数現われても構いません。このディレクティブによる指定はTypesConfigファイルの指定よりも優先されます。

AddHandler MODULENAME SUFFIX

拡張子がSUFFIXであるようなURIに対してハンドラをMODULENAMEに設定します。

Options OPTION [...]

そのディレクトリに様々なオプションを設定します。複数の引数を指定することができます。現在のバージョンでOPTIONとして利用可能なものは、IndexesNoFileCacheです。Indexesオプションをディレクトリに指定すると、そのディレクトリ及び下位のディレクトリの一覧表示を許可します。NoFileCacheオプションを指定すると、そのディレクトリ及び下位のディレクトリ上のファイルをキャッシュに保存せず、常にディスクから読み出すようになります。

SSLVerifyClient REQUIREMENT

SSLクライアント認証の設定をします。REQUIREMENTrequireのときはSSLCACertificateFileで指定されたCAが発行した証明書を提示するようクライアントに要求し、提示しなかった場合には接続を切断します。REQUIREMENTnoneのときはクライアント認証をおこないません。

SSLVerifyDepth NUMBER

SSLクライアント認証の際の認証チェーンの最大長を指定します。ルートCAからNUMBER個までの長さのチェーンまで許可します。これを指定したかった場合は1を指定したのと同じことになります。

SSLRequireSSL (On|Off)

SSL接続以外を拒否するかどうかを指定します。これをOnにすると、SSL接続ではないクライアントからのそのディレクトリ以下へのリクエストを拒否するようになります。

<FilesMatch PATTERN>

FilesMatchセクションを定義します。これと</FilesMatch>に挟まれた行に、ファイル名が正規表現PATTERNにマッチするようなファイルについての設定を書きます。

特定のパターンにマッチするファイル名についての設定

特定のパターンにマッチするファイル名についての設定をするには、<FilesMatch PATTERN></FilesMatch>に挟まれた内側の行に、以下で説明するディレクティブを書きます。リクエストが複数の<FilesMatch>のパターンにマッチする場合は、設定ファイルの前のほうにある<FilesMatch>セクションが有効になります。以下のディレクティブは<FilesMatch>セクションの外側にも書くことができ、これはリクエストがいずれの<FilesMatch>セクションにもマッチしない場合にその設定が有効になります。

<Limit METHOD [...]>

Limitセクションを定義します。これと</Limit>に挟まれた行に、メソッドがMETHOD ...のいずれかである場合についての設定を書きます。

特定のHTTPメソッドについての設定

特定のHTTPメソッドについての設定をするには、<Limit METHOD [...]></Limit>に挟まれた内側の行に、以下で説明するディレクティブを書きます。リクエストが複数の<Limit>のパターンにマッチする場合は、設定ファイルの前のほうにある<Limit>セクションが有効になります。以下のディレクティブは<Limit>セクションの外側にも書くことができ、これはリクエストがいずれの<Limit>セクションにもマッチしない場合にその設定が有効になります。

Require user USERNAME [...]

クライアントにユーザ名とパスワードの入力を要求し、ユーザ名がUSERNAME ...のいずれかであり、なおかつ入力されたユーザ名とパスワードがそのディレクトリに設定されたAuthUserFileファイルに書かれた正しいユーザ名とパスワードの組に一致した場合にのみアクセスを許可します。

Require valid-user

クライアントにユーザ名とパスワードの入力を要求し、入力されたユーザ名とパスワードがそのディレクトリに設定されたAuthUserFileファイルに書かれた正しいユーザ名とパスワードの組に一致した場合にのみアクセスを許可します。

補足: apacheの設定ファイルとの違い

apacheの設定ファイルとesehttpdの設定ファイルでは、セクションの外側に書かれた設定についての解釈が異なります。apacheの設定ファイルでは、たとえばリクエストがある<Directory>にマッチするとき、その<Directory>の中で設定されていない項目については<Directory>の外側に書かれた設定が有効になります。一方esehttpdの設定ファイルでは、もしリクエストがある<Directory "/foo/bar">にマッチするとき、その<Directory "/foo/bar">の中で設定されていないディレクトリ毎の設定項目についてはデフォルトの値が利用され、<Directory "/foo/bar"></Directory>で囲まれたセクションの外側に書かれたディレクトリ毎の設定は一切影響を及ぼしません。
戻る
Akira Higuchi