esehttpdはapacheとほぼ同等の書式の設定ファイルを使います。デフォルトではesehttpdは起動時に設定ファイルとして/etc/esehttpd/esehttpd.confを読み込みますが、コマンドライン引数で変更することもできます。
設定ファイルの各行は、ディレクティブとその引数から成っています。引数がどのように解釈されるかは、各ディレクティブによって異なります。行頭の空白は無視され、また行頭が'#'文字で始まっている行は無視されます。
特定のディレクトリなど、サーバの一部分だけの設定を変更するには、<VirtualHost>...</VirtualHost>, <Directory>...</Directory>, <FilesMatch>...</FilesMatch>, <Limit>...</Limit>に囲まれた行(セクション)にそのディレクティブを書きます。サーバ全体にかかわるディレクティブはこれらのセクションの外側に書きます。
ディレクティブの引数がファイル名やパス名、正規表現などをあらわしている場合は、引数をダブルクォート『""』で括ることが出来ます。ダブルクォートの内側ではエスケープ文字としてバックスラッシュ『\』を使います。『\"』はダブルクォート文字自身をあらわし、『\\』はバックスラッシュ文字自身をあらわします。
ServerRoot DIRNAMEBindAddress ADDRESSUser NAMEGroup NAMEUserディレクティブと同様です。
MaxFiles NUMBERStartServers NUMBERChangeRoot DIRNAMEUserで指定したユーザに権限を落す直前に指定したディレクトリへchrootします。これを指定しなかった場合はchrootしません。このディレクティブによってchrootするように設定した場合は、設定ファイルの中のいくつかのディレクトリ等のパス名が、chrootするディレクトリのサブディレクトリになっていなければならないことに注意してください。例えば/var/wwwにchrootしたときは、DocumentRootディレクティブには/var/www/htmlのように/var/www/のサブディレクトリでなくてはなりません。また<Directoryで指定するディレクトリ名もchrootするディレクトリのサブディレクトリでなくてはなりません。この条件を満たしてない場合は、エラーになります。
ListenBacklog NUMBERSendBufferSize NUMBERRecvBufferSize NUMBERFileCacheSize NUMBERFileCacheThreshold NUMBERSendCGIErrors (On|Off)MultipleAccept (On|Off)ForceLingeringClose (On|Off)LingeringCloseLimit NUMBERRequestHeaderLimit NUMBERRequestBodyLimit NUMBERExpect: 100-continueヘッダの無いリクエストかHTTP 1.0リクエストのリクエストボディがこの値を越えた場合は413 Request Entity Too Largeを返し、lingering closeを行います。Expect: 100-continueヘッダが有るばあいは417 Expectation Failedを返します。この値を小さくするとフォーム等で大きなデータが送れなくなり、逆に大きいとDoS攻撃に弱くなります。
ScriptEvalMax NUMBERStartServersに2以上の値を指定したときに限られ、StartServersが1の場合はScriptEvalMaxの設定は無視されます。
<VirtualHost HOSTNAME></VirtualHost>に挟まれた行にバーチャルホスト毎の設定を書きます。
<VirtualHost>と</VirtualHost>に挟まれた行に以下のディレクティブを書きます。以下のディレクティブは<VirtualHost>の外側にも書くことができますが、その設定はいずれの<VirtualHost>にもマッチしない場合に有効になります。
Port NUMBERServerName HOSTNAMElocalhostになります。
PassEnv NAME [...]CustomLog FILENAME [LOGTYPE]StartServersに2以上の値を指定した場合には、ここで指定したファイル名にさらにプロセス番号のサフィックスが付いた名前のファイルに書き込まれます。LOGTYPEはcommonかcombinedのいずれかを指定します。commonを指定した場合にはCommon Logfile Formatに従った形式のログが出力されます。combinedの場合はCommon Logfile Formatに加えて、User-AgentとRefererも記録されます。LOGTYPEを省略した場合にはcommonを指定したことと同じになります。
NoLog CODE [...]DocumentRoot DIRNAMETypesConfig FILENAME/usr/local/lib/esehttpd/conf/mime.types等(インストール方法によって変わってきます)になります。
ErrorDocumentDir DIRNAMETimeOut SECSSLPort NUMBERPortとSSLPortのいずれも指定しなかった場合はそのサーバは何もおこないません。
SSLCertificateFile FILENAMEFILENAMEは証明書を含んだPEM形式のファイルでなくてはなりません。このディレクティブはSSLを利用するときには必須です。
SSLCertificateKeyFile FILENAMEFILENAMEはRSAキーを含んだPEM形式のファイルでなくてはなりません。もしこのディレクティブを指定しなかった場合には、SSLCertificateFileで指定されたファイルからRSAキーも読み取ろうとします。よって、SSLを利用するときにはこのSSLCertificateKeyFileで指定したPEMファイルかSSLCertificateFileで指定したPEMファイルのいずれかにRSAキーが含まれていなければなりません。
SSLCACertificateFile FILENAMESSLVerifyClient requireが指定されたディレクトリにアクセス要求が来た際、このCAが発行した証明書を提示するようクライアントに要求し、正しい証明書を提示しなかった場合に接続を切断します。FILENAMEは証明書を含んだPEM形式のファイルでなくてはなりません。
SSLDHParamFile FILENAMEFILENAMEはDHパラメータを含んだPEM形式のファイルでなくてはなりません。もしこのディレクティブを指定しなかった場合には、SSLCertificateFileで指定されたファイルからDHパラメータも読み取ろうとします。もしSSLDHParamFileが指定されておらず、SSLCertificateFileで指定されたファイルにもDHパラメータが含まれていなかった場合には、DHを使った暗号は利用できなくなります。
SSLCipherSuite STRINGSTRINGに指定する文字列は、openssl ciphersと実行して得られる結果と同じ書式です。実際にサーバとクライアント間の通信で利用される暗号は、このリストに含まれるものの中からクライアントとネゴシエートして決められます。
Alias URI DIRNAMEScriptAlias URI DIRNAME [MODULENAME]Aliasと同様、指定したURI以下を特定のディレクトリにマップしますが、さらにそのURIに対するハンドラをMODULENAMEに設定します。MODULENAMEが指定されなかった場合はcgi-scriptが指定されたことと同じになります。
<Directory DIRNAME></Directory>に挟まれた行にそのディレクトリ以下のファイルについての設定を書きます。
<Directory DIRNAME>と</Directory>で挟まれた内側の行に、以下で説明するディレクティブを書きます。ここでDIRNAMEは設定を施す対象となるディレクトリ名です。リクエストがあったファイルが複数の<Directory>にマッチする場合は、マッチするパスが最も長いものが有効になります。以下のディレクティブは<Directory>セクションの外側にも書くことができ、ファイルがいずれの<Directory>にもマッチしない場合にこの<Directory>セクションの外側に書かれた設定が有効になります。
AuthUserFile FILENAMEAuthName NAMEAuthRequireSSL (On|Off)DirectoryIndex FILENAME [...]index.htmlが指定されたのと同じことになります。これらのファイルが見つからなかった場合、そのディレクトリの一覧表示が許可されている場合は一覧表示をおこない、許可されていなければ403 Forbiddenになります。
DefaultType MIMETYPEMIMETYPEにします。すなわち、AddTypeやTypesConfigファイルを参照してもMIME型が判明しなかったファイルのMIME型がこれで指定されたものになります。
AddType MIMETYPE SUFFIXSUFFIXであるようなファイルのMIME型をMIMETYPEにします。このディレクティブは複数現われても構いません。このディレクティブによる指定はTypesConfigファイルの指定よりも優先されます。
AddHandler MODULENAME SUFFIXSUFFIXであるようなURIに対してハンドラをMODULENAMEに設定します。
Options OPTION [...]OPTIONとして利用可能なものは、IndexesとNoFileCacheです。Indexesオプションをディレクトリに指定すると、そのディレクトリ及び下位のディレクトリの一覧表示を許可します。NoFileCacheオプションを指定すると、そのディレクトリ及び下位のディレクトリ上のファイルをキャッシュに保存せず、常にディスクから読み出すようになります。
SSLVerifyClient REQUIREMENTREQUIREMENTがrequireのときはSSLCACertificateFileで指定されたCAが発行した証明書を提示するようクライアントに要求し、提示しなかった場合には接続を切断します。REQUIREMENTがnoneのときはクライアント認証をおこないません。
SSLVerifyDepth NUMBERNUMBER個までの長さのチェーンまで許可します。これを指定したかった場合は1を指定したのと同じことになります。
SSLRequireSSL (On|Off)Onにすると、SSL接続ではないクライアントからのそのディレクトリ以下へのリクエストを拒否するようになります。
<FilesMatch PATTERN></FilesMatch>に挟まれた行に、ファイル名が正規表現PATTERNにマッチするようなファイルについての設定を書きます。
<FilesMatch PATTERN>と</FilesMatch>に挟まれた内側の行に、以下で説明するディレクティブを書きます。リクエストが複数の<FilesMatch>のパターンにマッチする場合は、設定ファイルの前のほうにある<FilesMatch>セクションが有効になります。以下のディレクティブは<FilesMatch>セクションの外側にも書くことができ、これはリクエストがいずれの<FilesMatch>セクションにもマッチしない場合にその設定が有効になります。
<Limit METHOD [...]></Limit>に挟まれた行に、メソッドがMETHOD ...のいずれかである場合についての設定を書きます。
<Limit METHOD [...]>と</Limit>に挟まれた内側の行に、以下で説明するディレクティブを書きます。リクエストが複数の<Limit>のパターンにマッチする場合は、設定ファイルの前のほうにある<Limit>セクションが有効になります。以下のディレクティブは<Limit>セクションの外側にも書くことができ、これはリクエストがいずれの<Limit>セクションにもマッチしない場合にその設定が有効になります。
Require user USERNAME [...]USERNAME ...のいずれかであり、なおかつ入力されたユーザ名とパスワードがそのディレクトリに設定されたAuthUserFileファイルに書かれた正しいユーザ名とパスワードの組に一致した場合にのみアクセスを許可します。
Require valid-userAuthUserFileファイルに書かれた正しいユーザ名とパスワードの組に一致した場合にのみアクセスを許可します。
<Directory>にマッチするとき、その<Directory>の中で設定されていない項目については<Directory>の外側に書かれた設定が有効になります。一方esehttpdの設定ファイルでは、もしリクエストがある<Directory "/foo/bar">にマッチするとき、その<Directory "/foo/bar">の中で設定されていないディレクトリ毎の設定項目についてはデフォルトの値が利用され、<Directory "/foo/bar">と</Directory>で囲まれたセクションの外側に書かれたディレクトリ毎の設定は一切影響を及ぼしません。