トップ > 技術資料 > Apache conf設定メモ

Apache conf 設定メモ
Last update:2003/11/26

 Apache の設定(httpd.conf)について、気になるところを簡潔にまとめたメモです。1.3ベースです。詳細は、Apache のマニュアル(Ver2.1)などを参照ください。インストール時、一緒に入っているはずです(大部分が英語ですが……)。

Section 1 : Global Environment

ServerType {inetd | standalone}
inetd 起動。デーモン。
ServerRoot
システムファイルの存在する dirctory。
config file、log file 参照時のカレント dir。
ScoreBoardFile
サーバがその子と親との間の通信を使うファイルを置く
TimeOut
パケットなどのタイムアウトまでの秒数。
MinSpareServers
MaxSpareServers
idle子サーバのプロセス数。通常は変更しないこと。
StartServers
起動時に作られる子サーバプロセス数。自動変化するので調整不要。
MaxClients
同時リクエストの限度数。
Listen
複数の IP アドレスやポートを認識させる。BindAddress と Port の代わりに使用する。
ディフォルトではすべての IP と、Port で指定した1つのポート。
(ex. Listen 80 / Listen 8000 / Listen 192.170.2.5:8000)
BindAddress
サービスする IP を指定。すべて、または1つ。
"*" を指定すれば、認識可能なすべての IP アドレスで動作する。
Port
サービスする Port 番号。

Section 2 : Global Environment

User
Group
サービスプロセスを実行するユーザ、グループ。
ServerAdmin
クライアントへ返すエラーメッセージに含まれるe-mailアドレス。
ServerName
サーバのホスト名を設定。エラーメッセージなどで表示されます。
何も指定しないと、IP アドレスからの逆引きを試みる。
DocumentRoot
クライアントにファイルを提供するディレクトリを設定。 スラッシュ("/")で終わっていると問題が発生する。
UserDir
ユーザのファイルをリクエストされたときに、参照するディレクトリ。
UserDir public_html -> ~bob/public_html/one/two.html
UserDir /home/*/www -> /home/bob/www/one/two.html
UserDir /usr/web -> /usr/web/bob/one/two.html
UserDir disabled -> Userファイルの機能を無効にする
UserDir disabled root -> root のみ Userファイルの機能を無効にする
DirectoryIndex
"/" で終わるパスを要求されたときに探すファイル名。
DirectoryIndex index.html index.txt /cgi-bin/index.pl
と指定すれば、index.html index.txt のどちらも存在しない場合、"/cgi/index.pl" を実行させる。
AccessFileName
アクセスコントロールファイルの名前。
CacheNegotiatedDocsM
プロキシーサーバによってキャッシュされることを許可する。
HTTP/1.0ブラウザを実行するリクエストにのみ対応(1.0用の設定)。
DefaultType
不明の拡張子に対する、MIMEタイプの指定。
HostnameLookups {off | on | double}
アクセス元IPを逆引きするか、しないか。逆引き結果は環境変数 REMOTE_HOST に設定される。
double は二重引きを行う(より信頼度の高いホスト名となる / 嘘つきDNS参照)。
ErrorLog
エラーログの在りか。
LogFormat {log format} {format nickname]
CustomLog {log_file} [format or format nickname]
ログの内容をカスタマイズします。
ServerSignature {On | Off | EMail}
error などのとき、最後にサーバシグネチャーや、
ServerAdmin で指定したメールアドレスを付加するか。
Alias {url-path} {directory}
ScriptAlias {url-path} {directory}
DocumentRoot に alias を設定(DocumentRoot 以外の directory では無効)

IndexOptions (ディフォルト指定は "FancyIndexing" のみ)
ディレクトリインデックス(ファイル一覧)の動きを指定(詳細略)。
AddIcon
FancyIndexing時の拡張子に対する表示アイコンの指定。
AddIconByEncoding
FancyIndexing時の MIME に対する表示アイコンの指定。
DefaultIcon
FancyIndexing時のディフォルトのアイコンの指定。
AddDescription
FancyIndexing時のファイル表示のための記述。

HeaderName
インデックスリスト表示時(ファイル一覧)の冒頭に挿入されるファイル名を設定。
ReadmeName
インデックスリスト表示時の終わりに添付されるファイル名を設定。
IndexIgnore
ディレクトリをリスト表示しているときに隠すファイル名のリスト追加。
AddEncoding
特定の拡張子に対してエンコード形式をリストに追加。

AddLanguage
特定の拡張子に対すてファイルの中身の言語種類をリストに追加。
AddDefaultCharset
標準の文字コードを指定。ネスケの文字化け対策に必須
LanguagePriority
言語変化の優先を指定。後ろの方ほど優先度が下がる。

AddType
拡張子に対する MIME type を追加する。
AddHandler
特定の拡張子のファイルを handler に結びつける。
send-as-is: HTTPヘッダーを持ったファイルファイルを送る (mod_asis)
cgi-script: ファイルを CGI スクリプトととして取り扱う (mod_cgi)
imap-file: イメージマップのルールファイル (mod_imap)
server-info: サーバーのコンフィギュレーションの情報を得る (mod_info)
server-parsed: server-side includesの解析 (mod_include)
server-status: サーバのステータスの報告を得る (mod_status)
type-map: content negotiationのファイルをタイプマップとして解析する (mod_negotiation)
ErrorDocument
エラー発生時の動作指定。
ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
指定したファイルが存在しない。
ErrorDocument 401 /subscription_info.html
ErrorDocument 403 "Sorry can't allow you access today"
アクセスが許されていない。
ProxyRequests
Apache を proxy/cache として動作させるか。ディフォルトは off。

XBitHack {on | off | full}
SSI を実行するページを拡張子でなく、ファイルの XBit(実行可能属性)で指定する機能を有効にするか。
SSI については、無駄な負荷や混乱を避けるために拡張子指定よりも XBitHack を個人的に推奨(参照ページ)。

Section 3 : Virtual Hosts

 よく使われる Name Based Virtual Host についてのみ述べます。

 以下はバーチャルホストの例です。注意しなければならないのは、ディフォルトで表示されるページは、Section.2 までで記述した httpd.conf の設定ではないということです。先頭に記述した VirtualHostがディフォルトとなります。この場合、www.abk.nu がディフォルトとなり、IP アドレスや特に指定されていない別名でアクセスされたときは、この www.abk.nu で記述された VirtualHost が表示されます。

<VirtualHost *>
	ServerName www.abk.nu
	DocumentRoot /var/webpage
</VirtualHost>

<VirtualHost *>
	ServerName pyn.abk.nu
	ServerAlias www.pyn.abk.nu
	DocumentRoot /home/webpage_pyn
	ServerAdmin pyn@abk.nu
	ErrorLog /var/log/pyn_error.log
	CustomLog /var/log/pyn_referer.log referer
	CustomLog /var/log/pyn_access.log common
</VirtualHost>

#----- These setting is dummy. ---
NameVirtualHost {Address}
ホスト名ベースのバーチャルホストに使用するIPアドレスを指定します。通常は * を指定すれば良いでしょう。
ServerName
サーバ名を指定します。ここで指定したサーバ名(ホスト名)を使ってアクセスしたときに、その VirtualHost が指定されたこととなります。またエラー時に表示されるホスト名は、ここで指定したホストになります。
ServerAlias
VirtualHost に対する別名を指定します。ここに列挙されたホストのいずれかが指定されると、その VirtualHiost が指定されたことになります。
DocumentRoot
トップページを指定します。この場合 http://pyn.abk.nu/ でアクセスがあった場合は、/home/webpage_pyn の中身を表示しろと解釈できます。
ServerAdmin
サーバ管理者のメールアドレスを指定します。エラーメッセージなどで表示されます。
ErrorLog, CustomLog
ログファイル名を指定します。複数の VirtualHost を運用する場合は、ログファイルを分けておく方が現実的です。ここでログファイルを指定しないと、Section 2 で指定したディフォルトのログファイルに出力されます。

 この他にも、多くのディテクティブ(設定)をバーチャルホストごとに指定することが可能です(例: alias)。
 また、<VirtualHost 12.34.167.8:80> 等と、IPやポートごとにバーチャルホストを構成することも可能です。

Apache設定 Tips

●設定有効化、再起動
設定の構文確認 : host ~$ apachectrl configtest
再起動(設定の有効化) : host ~$ apachectrl restart
●ファイルが読めない! .htaccess
<Directory> ディテクティブ内の設定で、該当のディレクトリが
Order allow,deny
Allow from all
となっているか。また、AllowOverride の設定がどうなっているか確認しましょう。
● .(ドット)で始まるファイルを読み込めなくする
.htpasswd や httpd.confに以下のように設定します。
<Files ~ "^\.">
    Order allow,deny
    Deny from all
</Files>
●パスワードの設定
htpasswd によってパスワードファイルを作成したり(-c)、ユーザーを追加できます。
以下は .htaccess 内の記述です。
AuthUserFile     (パスワードファイル名を絶対パスで指定)
AuthGroupFile    /dev/null
AuthName         "メっセージ"
AuthType         Basic
<Limit POST GET>
require user  [ 許可するユーザ名 / 省略時は誰でも可 ]
</Limit>

トップ > 技術資料 > Apache conf設定メモ