httpdの設定(httpd.conf)

[サーバの実験室 Slackware]

作成 : 2003/03/16
修正 : 2005/01/28

"サーバの実験室"の検索


httpd の設定

httpd の設定は、httpd.conf に記述する。 デフォルトの httpd.conf に記述されているディレクティブについて、順に見ていく。 (重複するものは省略) その他のディレクティブについては、apache.org のディレクティブ クイックリファレンスあたりを参照。

デフォルトの httpd.conf

ServerRoot [core モジュール]

Web サーバのルートになるディレクトリを指定する。 httpd.conf の中に記述されるログファイルやアイコンファイルなどは、ここからの相対パスになる。

ServerRoot "/usr/local/apache2"

<IfModule> 〜 </IfModule> [core モジュール]

指定の MPM(Multi Processing Module)がロードされた場合、囲まれた設定が有効になる。 MPM の前に ! をつけると、指定の MPM 以外がロードされた場合、囲まれた設定が有効になる。 OS によってデフォルトの MPM がある(下の表を参照)が、configure するとき --with-mpm=xxxx で別の MPM を指定することができる。

OSMPM備考
BeOSbeos
Netwarempm_netware
OS/2mpmt_os2
Windowsmpm_winnt
Unixpreforkリクエストはプロセスが処理、負荷によってプロセスが増減(apache-1.3 と同様)
-workerリクエストはスレッドが処理、負荷によってスレッドが増減

PidFile [prefork モジュール]

httpd の PID を書き込むファイルを指定する。

PidFile logs/httpd.pid

Timeout [core モジュール]

指定された秒数を待っても応答がない場合は、セッションを切断する。 デフォルト値は 300。

Timeout 300

KeepAlive [core モジュール]

通常の HTTP 接続では、ひとつのコネクションでひとつのリクエスト(ファイルの転送)を扱う。 Keep-Alive を On にすると、ひとつのコネクションで複数のリクエストを扱うことができる。 Keep-Alive を On にしていても、ブラウザが Keep-Alive に対応していなければ、通常のリクエスト処理をする。 デフォルトは On。

KeepAlive On

MaxKeepAliveRequests [core モジュール]

Keep-Alive を On にしているとき、ひとつのコネクションで許可されるリクエスト数。 0 を指定したときは、許可するリクエスト数は無制限になる。 デフォルトは 100。

MaxKeepAliveRequests 100

KeepAliveTimeout [core モジュール]

Keep-Alive を On にしているとき、ひとつのコネクションで許可されるリクエスト数。 0 を指定したときは、許可するリクエスト数は無制限になる。 デフォルトは 15。

KeepAliveTimeout 15

StartServers [worker モジュール]

起動時に生成される子サーバプロセスの数。 デフォルト値は 5。

StartServers 5

MinSpareServers [prefork モジュール]

アイドル(リクエストを受けていない)子サーバプロセスの最小数。 デフォルト値は 5。

MinSpareServers 5

MaxSpareServers [prefork モジュール]

アイドル(リクエストを受けていない)子サーバプロセスの最大数。 デフォルト値は 10。

MaxSpareServers 10

MaxClients [prefork モジュール]

応答することのできる同時セッション数。 デフォルト値は 150。

MaxClients 150

MaxRequestsPerChild [prefork モジュール]

応答することのできる同時セッション数。 デフォルト値は 0。

MaxRequestsPerChild 0

Listen [prefork モジュール]

リクエストを待つ IP アドレスとポートを指定する。 複数の IP アドレスとポートでリクエストを受け付けるよう、複数の Listen ディレクティブを記述することができる。 ポート番号だけ指定した場合は、すべての IP インターフェースへのリクエストを受け付ける。

Listen 80
Listen 443

特定の IP アドレスとポートを指定するには、"IPアドレス : ポート番号"のように記述する。

Listen 192.169.0.10:80

LoadModule [mod_so モジュール]

DSO ファイルをリンクして、モジュールを使用できるようにする。

LoadModule モジュール ファイル

モジュールの一覧は下のとおり。 MPM と mod_http は、httpd バイナリに含まれるので LoadModule する必要はない。 DSO を使用するなら、mod_so は必須。

モジュールファイル機能状態
access_modulemod_access.soIP アドレス、ホスト、リクエスト特性などにもとづくアクセス制御Base
auth_anon_modulemod_auth_anon.so認証が必要なエリアへの匿名ユーザの接続を許可Extension
auth_dbm_modulemod_auth_dbm.soDBM ファイルを使用したユーザ認証Extension
auth_digest_modulemod_auth_digest.soMD5 ダイジェスト認証を使用したユーザ認証Experimental
isapi_modulemod_isapi.soISAPI エクステンション(Windows)Base
file_cache_modulemod_file_cache.so静的なファイルリストをメモリにキャッシュExperimental
echo_modulemod_echo.soプロトコルモジュールの概要を示すための単純なエコーサーバExperimental
charset_lite_modulemod_charset_lite.soキャラクタセットの変換と翻訳Experimental
cache_modulemod_cache.soURI をもとにした Content cacheExperimental
disk_cache_modulemod_disk_cache.soURI をもとにした Content cache storage manager(ディスクベース)Experimental
mem_cache_modulemod_mem_cache.soURI をもとにした Content cache storage manager(メモリベース)Experimental
example_modulemod_example.soモジュール API の変換Experimental
case_filter_modulemod_case_filter.so??
case_filter_in_modulemod_case_filter_in.so??
ldap_modulemod_ldap.soLDAP connection pooling and result caching services for use by other LDAP modulesExperimental
auth_ldap_modulemod_auth_ldap.soAllows an LDAP directory to be used to store the database for HTTP Basic authentication.Experimental
ext_filter_modulemod_ext_filter.soクライアントに送る前に、レスポンスを外部プログラムに渡すExtension
include_modulemod_include.soServer Side IncludeBase
deflate_modulemod_deflate.soクライアントへ送るコンテンツを圧縮Extension
log_config_modulemod_log_config.soサーバへのリクエストのロギングBase
env_modulemod_env.soCGI や SSI へ渡される環境変数の変更Base
mime_magic_modulemod_mime_magic.soファイルの内容による MIME タイプの決定Extension
cern_meta_modulemod_cern_meta.soCERN HTTPD が使用する追加の HTTP ヘッダー形式でメタ情報を指定Exptension
expires_modulemod_expires.soExpire HTTP ヘッダの生成Extension
headers_modulemod_headers.soHTTP リクエスト / レスポンスのヘッダをカスタマイズExtension
usertrack_modulemod_usertrack.soユーザの行動を追跡するためのクッキーログを記録Extension
unique_id_modulemod_unique_id.soそれぞれのリクエストに対する一意な識別子の入った環境変数を提供Extension
setenvif_modulemod_setenvif.soリクエストの特徴に基づいた環境変数の設定Base
proxy_modulemod_proxy.soHTTP/1.1 プロキシ / ゲートウェイサーバExtension
proxy_connect_modulemod_proxy_connect.soCONNECT リクエストを扱うための mod_proxy 拡張Extension
proxy_ftp_modulemod_proxy_ftp.somod_proxy のための FTP サポートモジュールExtension
proxy_http_modulemod_proxy_http.somod_proxy のための HTTP サポートモジュールExtension
ssl_modulemod_ssl.soSSL / TLS を使用した暗号化Extension
optional_hook_export_modulemod_optional_hook_export.so??
optional_hook_import_modulemod_optional_hook_import.so??
optional_fn_import_modulemod_optional_fn_import.so??
optional_fn_export_modulemod_optional_fn_export.so??
bucketeer_modulemod_bucketeer.so??
http_modulemod_http.so常に利用可能な HTTP サーバの中核機能Core
mime_modulemod_mime.soリクエストされたファイルの拡張子とファイルの振る舞い(ハンドラとフィルタ)、内容(MIME タイプ、言語、文字セット、エンコーディング)との関連付けBase
dav_modulemod_dav.so分散オーサリングとバージョン管理(WebDAV)機能Extension
status_modulemod_status.soサーバの動作状況を HTML で出力Base
autoindex_modulemod_autoindex.sols コマンドに似たディレクトリインデックスを自動的に生成Base
asis_modulemod_asis.so自分用の HTTP ヘッダの書かれているファイルを送信Base
info_modulemod_info.soサーバ設定情報を表示Extension
suexec_modulemod_suexec.so指定されたユーザとグループで CGI スクリプトを実行Extension
cgi_modulemod_cgi.soCGI スクリプトの実行Base
cgid_modulemod_cgid.so外部 CGI デーモンを使用した CGI スクリプトの実行Base
dav_fs_modulemod_dav_fs.somod_dav のためのファイルシステムを提供Extension
vhost_alias_modulemod_vhost_alias.sodynamically configured mass virtual hosting の提供Extension
negotiation_modulemod_negotiation.soコンテントネゴシエーション機能の提供Base
dir_modulemod_dir.so「最後のスラッシュ」のリダイレクトと、ディレクトリのインデックスファイルを扱う機能Base
imap_modulemod_imap.soServer-side imagemap processingBase
actions_modulemod_actions.soメディアタイプやリクエストメソッドに応じて CGI スクリプトを実行Base
speling_modulemod_speling.soユーザが入力したであろう間違った URL を、大文字小文字の区別を無視することと一つ以下の綴り間違いを許容することで修正Extension
userdir_modulemod_userdir.soユーザごとのディレクトリを提供Base
alias_modulemod_alias.soホストファイルシステム上のいろいろな違う場所をドキュメントツリーにマップする機能と、 URL のリダイレクトを行なう機能Base
rewrite_modulemod_rewrite.so要求されたURLをオンザフライで書き換える、ルールベースのエンジンを提供Extension
so_modulemod_so.so起動時や再起動時に実行コードとモジュールをサーバにロードExtension

たくさんモジュールがあるが、ほとんどは使用しないだろう。 必要なモジュールだけロードすること。 使用するディレクティブが必要とするモジュールは、apache.org のディレクティブクイックリファレンスを参照。 逆に、モジュールをロードすることで使用できるディレクティブは、apache.org の Module Index を参照。

User [prefork モジュール]

子プロセスを起動するユーザを指定する。 デフォルト値は nobody。

User nobody

UID を指定するには、# のあとに UID を記述する。 #-1 を指定すると、nobody ユーザになるらしい。 -1 = 65534 で Solaris とかは nobody ユーザの UID と一致するが、Slackware では UID は 99。 でも、ps -ef で確認すると、子プロセスは nobody ユーザで起動されているので、問題ないかも。

User #-1

Group [prefork モジュール]

子プロセスを起動するグループを指定する。 デフォルト値は #-1。

Group nobody

GID を指定するには、# のあとに GID を記述する。 #-1 を指定すると、nobody グループになるらしい。

User #-1

ServerAdmin [core モジュール]

サーバ管理者のメールアドレスを指定する。 エラーページに表示される。

ServerAdmin info@nina.jp

ServerName [core モジュール]

サーバが自分を認識するのに使用するホスト名とポートを指定する。 URL リダイレクションで使用される。 名前解決できないホストは、IP アドレスで指定する。

ServerName www.nina.jp:80

UseCanonicalName [core モジュール]

サーバ自身を参照する URL を指定する。 Off のとき、クライアントがリクエストに使用したホスト名とポートで自分を参照する。 On のとき、ServerName ディレクティブで指定されたホスト名とポートで自分を参照する。 デフォルト値は On。 (デフォルトの httpd.conf で、Off になっているのはなぜ?)

UseCanonicalName Off

DocumentRoot [core モジュール]

HTML ドキュメントのルートとなるディレクトリを指定する。 デフォルト値は /usr/local/apache2/htdocs。

DocumentRoot "/usr/local/apache2/htdocs"

DocumentRoot [core モジュール]

HTML ドキュメントのルートとなるディレクトリを、フルパスで指定する。 デフォルト値は /usr/local/apache2/htdocs。

DocumentRoot "/usr/local/apache2/htdocs"

<Directory> 〜 </Directory> [core モジュール]

指定したディレクトリに適用するディレクティブをグルーピングする。 <Directory> と </Directory> の間に、そのディレクトリで使用できる機能(SSI とか CGI とか)やアクセス制御のディレクティブを記述する。 サブディレクトリも設定を引き継ぐ。

<Directory />
    /(サーバ全体)に対する設定
</Directory>

<Directory /usr/local/apache2/htdocs>
    /usr/local/apache2/htdocs に対する設定
</Directory>

ディレクトリにワイルドカードを使用することもできる。 ? は任意の 1 文字、* は任意の文字列に対応する。

<Directory /home/*/public_html>
    /home/user1/public_html、/home/user2/public_html、.... に対する設定
</Directory>

ディレクトリに正規表現を使用することもできる。 最初に ~(チルダ)をつけること。

<Directory ~ "^/www/[0-9]{3}">
    /www/001、/www/002、.... に対する設定
</Directory>

注意! .htaccess が許可されているとき、<Directory> ディレクティブでの設定は上書きされる。

注意! <Directory> ディレクティブは、<Files> ディレクティブと <Location> ディレクティブより先に処理される。 <Files> ディレクティブや <Location> ディレクティブにもマッチした場合、設定は上書きされる。

注意! <Directory> ディレクティブは、ディレクトリが短いものから(つまり親ディレクトリから)順に処理される。 同じディレクトリに対して複数の指定がある場合は、設定ファイルで記述された順に処理される。

<Files> 〜 </Files> [core モジュール]

指定したファイルに適用するディレクティブをグルーピングする。 <Directory> ディレクティブと同様に、ワイルドカードや正規表現を使用することができる。

次の例では、.ht で始まるファイルにアクセス制御のディレクティブを適用し、すべての接続を拒否するよう設定している。

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

注意! <Files> ディレクティブは、<Location> ディレクティブより先に処理される。 <Location> ディレクティブにもマッチした場合、設定は上書きされる。

<Location> 〜 </Location> [core モジュール]

指定した URL に適用するディレクティブをグルーピングする。 <Directory> ディレクティブと同様に、ワイルドカードや正規表現を使用することができる。 ファイルシステムに依存しないオブジェクトにディレクティブを設定したいとき使用すること。

次の例では、/dir/ にアクセス制御のディレクティブを適用し、すべての接続を許可するよう設定している。

<Location /dir/>
    Order deny,allow
    Allow from all
</Location>

Options [core モジュール]

使用できる機能を指定する。 デフォルト値は All。

AllMultiViews を除いたすべての機能を使用できる
ExecCGICGI を使用できる
FollowSymLinksシンボリックリンクを使用できる
IncludesSSI を使用できる
IncludesNOEXEC#exec cmd と #exec cgi を除いた SSI を使用できる
Indexesディレクトリに対してリクエストがあり、そのディレクトリに DirectoryIndex ディレクティブで指定されたファイル(index.html など)が存在しない場合、ファイルの一覧を表示する
MultiViewsコンテントネゴシエーションを使用できる
SymLinksIfOwnerMatchターゲットとリンクの所有者が同じ場合のみ、シンボリックリンクを使用できる
Noneすべての機能を無効にする

次のように指定した場合、/usr/local/apache2/htdocs で使用できる機能は ExecCGI だけになる。 つまり、Options ディレクティブを指定した場合は、上位ディレクトリでの設定はマージされない。

<Directory />
    Options FollowSymLinks
</Directory>

<Directory /usr/local/apache2/htdocs>
    Options ExecCGI
</Directory>

+ / - を使用して、上位ディレクトリからの相対的な設定で記述することもできる。 次のように指定した場合、/usr/local/apache2/htdocs で使用できる機能は FollwSymLinks と ExecCGI になる。

<Directory />
    Options FollowSymLinks
</Directory>

<Directory /usr/local/apache2/htdocs>
    Options +ExecCGI
</Directory>

AllowOverride [core モジュール]

.htaccess ファイルに記述できるディレクティブのタイプを指定する。 デフォルト値は All。 ディレクトリごとの設定を記述するファイルは、AccessFileName ディレクティブで指定することができる。 (デフォルトは .htaccess)

Allすべてを許可する
AuthConfig認証のディレクティブを許可するAuthName、AuthType、AuthUserFile、Require など
FileInfoドキュメントタイプを制御するディレクティブを許可するDefaultType、ErrorDocument、AddHandler、AddType など
Indexesディレクトリインデックスを制御するディレクティブを許可するDirectoryIndex、IndexOptions、DefaultIcon など
Limitサーバへのアクセスを制御するディレクティブを許可するOrder、Allow、Deny
Options使用できる機能を制御するディレクティブを許可するOptions、XBitHack
Noneすべてを無効にする

次のように指定した場合、/usr/local/apache2/htdocs/.htaccess ファイルに記述した、認証関連のディレクティブが有効になる。

<Directory /usr/local/apache2/htdocs>
    AllowOverride AuthConfig
</Directory>

Order [mod_access モジュール]

デフォルトのアクセス制限と、Allow ディレクティブと Deny ディレクティブが評価される順番を指定する。

deny,allowデフォルトはすべてのホストからアクセス可能。Deny ディレクティブにマッチし、Allow ディレクティブにマッチしないホストからのアクセスは拒否される。
allow,denyデフォルトはすべてのホストからのアクセスを拒否。Allow ディレクティブにマッチし、Deny ディレクティブにマッチしないホストからのアクセスは許可される。

Allow / Deny [mod_access モジュール]

Allow ディレクティブはアクセスを許可するホスト、Deny ディレクティブはアクセスを拒否するホストを指定する。 Order ディレクティブの記述によって、許可 / 拒否の動作が変わってくるので注意。

次の例は、ホスト名でアクセスを制御している。 Order ディレクティブで allow,deny を指定しているので、デフォルトではアクセスを拒否する。 Allow ディレクティブで example.com を指定しているので、example.com とサブドメイン(sub.example.com とか)からのアクセスは許可される。 注意! Allow ディレクティブと Deny ディレクティブにホスト名を指定すると、リクエスト元の IP アドレスを必ず逆引きする。

Order allow,deny
Allow from example.com

次の例は、IP アドレスでアクセスを制御している。 Order ディレクティブで deny,allow を指定しているので、デフォルトではアクセスを許可する。 Deny ディレクティブで 1.2.3.4 と 5.6.7.8 を指定しているので、IP アドレスが 1.2.3.4 と 5.6.7.8 のホストからのアクセスは拒否される。 注意! Allow ディレクティブと Deny ディレクティブのキーワードはカンマ区切りで複数記述することができるが、スペースをいれてはならない。

Order deny,allow
Deny from 1.2.3.4,5.6.7.8

IP アドレス範囲でアクセスを制御することもできる。 次の 3 つは、書き方は違うがすべて同じ内容。

Allow from 1.0.0
Allow from 1.0.0.0/255.255.255.0
Allow from 1.0.0.0/24

AuthType [core モジュール]

ユーザ認証のタイプを選択する。 Basic または Digest のみが使用できる。

AuthType Basic

AuthName [core モジュール]

認証領域の名前を指定する。

AuthName "Secret"

AuthUserFile [mod_auth モジュール]

認証に使用するユーザとパスワードの一覧が格納されている、テキストファイルの名前を指定する。 ファイルはドキュメントツリーの外に置くこと!

AuthUserFile .htaccess

ファイルにユーザを追加するには、htpasswd ユーティリティを使用する。 -c をつけて htpasswd を使用すると、ファイルを新規に作成する。 ユーザを追加するときは、-c をつけないこと。

# htpasswd -c .htaccess user1
New password: (パスワード)
Re-type new password: (パスワード確認入力)
# htpasswd .htaccess user2
New password: (パスワード)
Re-type new password: (パスワード確認入力)

Require [core モジュール]

認証されたユーザがディレクトリにアクセス可能かを選択する。

下の例では、認証されたユーザの名前が user1 であればアクセスを許可する。

Require user user1

下の例では、認証されたユーザが所属するグループが group1 であればアクセスを許可する。 ユーザとグループの対応は、AuthGroupFile ディレクティブで指定したファイルに記述する。

Require group group1

下の例では、認証されたユーザであればアクセスを許可する。

Require valid-user

Satisfy [core モジュール]

Allow ディレクティブと Require ディレクティブ両方が使用されたときのアクセスポリシー。 ユーザ名 / パスワードと、クライアントホストアドレスの両方でアクセスが制限されているとき、このディレクティブは有効になる。 All または Any のいずれかを指定でき、デフォルト値は All。

All を指定した場合、クライアントホストアドレスとユーザ名 / パスワード両方の制限をパスしなければアクセスは許可されない。 Any を指定した場合、クライアントホストアドレスまたはユーザ名 / パスワードいずれかの制限をパスすればアクセスが許可される。

下の例では、192.168.0.X のホストからは、ユーザ名 / パスワードの入力なしにアクセスが許可される。 192.168.0.X 以外のホストからは、ユーザ名 / パスワードが正しく入力されればアクセスが許可される。

Require valid-user
Allow from 192.168.0
Satisfy any

UserDir [mod_userdir モジュール]

ユーザごとのドキュメントを置くディレクトリを指定する。 デフォルト値は public_html。

次の例では、http://www.example.com/~user/index.html へのリクエストは、~user/public_html/index.html に変換される。

UserDir public_html

次の例では、http://www.example.com/~user/index.html へのリクエストは、/usr/web/user/index.html に変換される。

UserDir /usr/web

次の例では、http://www.example.com/~user/index.html へのリクエストは、/var/user/public_html/index.html 二変換される。

UserDir /var/*/public_html

enabled / disabled で、ユーザごとにUserDir を許可 / 拒否することもできる。 ユーザを指定せずに enabled / disabled を記述した場合は、すべてのユーザドキュメントへのリクエストを許可 / 拒否する。 複数のユーザを指定する場合は、スペースで区切る。 次の例では、root と dis_user のドキュメントへのリクエストを拒否し、その他のユーザのドキュメントへのリクエストを許可している。

UserDir disabled root dis_user
UserDir enabled

<Limit> 〜 </Limit> [core モジュール]

指定されたメソッドでリクエストがあった場合、<Limit> 〜 </Limit> で囲まれたアクセス制御を適用する。 指定できるリクエストメソッドには、次のようなものがある。 (RFC2616 で規定)

GETURL で指定したリソースを取得
POST指定した URL が示すサーバーのコマンドに対して、データを転送
HEADURL で指定したリソースのレスポンスヘッダを取得
PUT指定した URL が示すリソースに対して、データを転送して置き換え
DELETEURL で指定したリソースを削除
OPTIONS使用できるメソッドやオプションの一覧を取得(HTTP/1.1)
TRACEサーバーやプロキシの動作を診断するための情報を返答(HTTP/1.1)
CONNECTプロキシでのトンネリング接続(HTTP/1.1)
PROPFINDプロパティの取得(RFC2518 WEBDAV )

<LimitExcept> 〜 </LimitExcept> [core モジュール]

指定されたメソッド以外でリクエストがあった場合、<LimitExcept> 〜 </LimitExcept> で囲まれたアクセス制御を適用する。

次の例では、GET メソッドと POST メソッドでリクエストされた場合はアクセスを許可し、それ以外のメソッドでリクエストされた場合はアクセスを拒否する。

<Limit GET POST>
    Order allow,deny
    Allow from all
</Limit>
<LimitExcept GET POST>
    Order deny,allow
    Deny from all
</LimitExcept>

DirectoryIndex [mod_dir モジュール]

ディレクトリへのリクエストに対し、返すドキュメントを指定する。 そのディレクトリに DirectoryIndex ディレクティブで指定されたファイルが存在しない場合、Options で Indexes が指定されていればファイルの一覧を表示する Options で Indexes が指定されていない場合は、403 Forbidden エラーになる。 デフォルト値は、index.html index.html.var。

次の例では、index.html、index.html.var の順に探して、最初に見つかったドキュメントを返す。

DirectoryIndex index.html index.html.var

AccessFileName [core モジュール]

ディレクトリごとに置かれる設定ファイルの名前を指定する。 デフォルト値は .htaccess。

AccessFileName .htaccess

TypesConfig [mod_mime モジュール]

MIME タイプを設定するファイルを指定する。 このファイルで MIME タイプとファイル拡張子とのマップを設定している。 デフォルト値は conf/mime.types。

注意! TypesConfig ディレクティブで指定したファイルは、編集しないほうがよい。 AddType ディレクティブでマップを追加・修正する。

TypesConfig conf/mime.types

DefaultType [core モジュール]

サーバが MIME タイプを決定できない場合に使用される、デフォルトの MIME タイプ。 デフォルト値は text/plain。

DefaultType text/plain

MimeMagicFile [core モジュール]

サーバが MIME タイプを決定できない場合に使用される、デフォルトの MIME タイプ。 指定されたマジックファイルを使用して、ファイルの内容にもとづき MIME タイプを決定する。 デフォルト値は conf/magic。

MimeMagicFile conf/magic

HostNameLookups [core モジュール]

IP アドレスをホスト名にするために、DNS の逆引きを行うかを指定する。 指定できるのは、On | Off | Double。 Double を指定すると、IP アドレスからホスト名に逆引きを行った後、そのホスト名から IP アドレスを正引きする。 デフォルト値は Off。

HostnameLookups Off

ErrorLog [core モジュール]

エラーログファイルを指定する。 デフォルト値は logs/error_log。

ErrorLog logs/error_log

LogLevel [core モジュール]

エラーログに記録する、メッセージのレベルを指定する。 デフォルト値は warn。 指定できるレベルは重要度の高い順に、emerg | alert | crit | error | warn | notice | info | degug。

LogLevel warn

LogFormat [mod_log_config モジュール]

ログファイルのフォーマットを指定する。 フォーマットを指定した後に、ニックネームをつける。 フォーマットに指定できる文字には、次のようなものがある。

%hリモートホスト
%lリモートログ名
%uリモートユーザ
%t時間
%rリクエストの最初の行(GET / HTTP/1.1 とか)
%>sステータス
%bHTTP ヘッダを除く送信バイト数
%{xxxx}iリクエストヘッダの項目 xxxx
%{Referer}iどの URL から移動してきたか
%{User-Agent}iブラウザ情報

デフォルトの httpd.conf には、4 種類のログフォーマットが定義されている。 LogFormat でフォーマットを定義し、CustomLog でどのフォーマットを使用するか指定する。

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

ステータスコードを条件として、ログに出力するかを設定することもできる。 たとえば、ステータスが 403 と 404 のときだけ %r をログに出力するには、次のようにする。 (ステータスが 403 と 404 以外の場合は、-(ハイフン)が出力される)

LogFormat %403,404r

CustomLog [mod_log_config モジュール]

アクセスログファイルとフォーマットを指定する。 フォーマットは LogFormat ディレクティブで定義したニックネームを指定してもいいし、ここで定義してもいい。 デフォルト値は logs/access.log common。

CommonLog logs/access.log common

LogFormat で定義した combined を使用したときの、アクセスログは次のような感じ。

192.168.0.100 - - [02/Mar/2003:04:56:31 +0900] "GET /whatsnew.html HTTP/1.1" 200 1583 
 "http://www.nina.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)"

バーチャルホストの設定をしたとき、<VirtualHost> 〜 </VirtualHost> の中でアクセスログファイルが指定されない場合は、サーバ設定の CommonLog で指定したファイルに出力される。 指定されている場合は、そちらにだけ出力される。

LAN からのアクセスをログに残したくない場合は、SetEnvIf ディレクティブと組み合わせて使用する。 たとえば、192.168.X.X からのアクセスを残したくないのであれば、次のように指定する。

SetEnvIf Remote_Addr 192.168 lan_addr
CommonLog logs/access.log common env=!lan_addr

ServerTokens [core モジュール]

サーバが返すレスポンスヘッダを設定する。 デフォルト値は Full。 ServerTokens ディレクティブを指定しない場合も Full になる。 指定できる値は、次のとおり。

ProdプロダクトのみServer: Apache
MajorメジャーバージョンもServer: Apache/2
MinorマイナーバージョンもServer: Apache/2.0
MinもっとマイナーバージョンもServer: Apache/2.0.44
OSOS もServer: Apache/2.0.44 (Unix)
FullすべてServer: Apache/2.0.44 (Unix) mod_ssl/2.0.44 OpenSSL/0.9.7
ServerTokens Full

ServerSignature [core モジュール]

サーバが生成するドキュメント(エラーページなど)のフッタを設定する。 デフォルト値は Off。 (でも、デフォルトの httpd.conf では On) 指定できる値は、On(フッタを表示) | Off(フッタを非表示) | Email(フッタに Email も合わせて表示)。 apache-2.0.44 以降では、フッタには SerevrTokens ディレクティブで指定された情報が使用される。

ServerSignature On

ServerTokens ディレクティブを Full、ServerSigunature ディレクティブを On にした場合、次のようなフッタが表示される。

Apache/2.0.44 (Unix) mod_ssl/2.0.44 OpenSSL/0.9.7 Server at 192.168.0.1 Port 80

Alias [mod_alias モジュール]

URL をファイルシステムにマップする。 DocumentRoot の外にマップすることも可能。

次の例では、/manual を /usr/local/apache2/manual へマップしている。 http://xxxx/manual/index.html のリクエストに対して、サーバは /4sr/local/apache2/manual/index.html を返す。

Alias /manual "/usr/local/apache2/manual"

ScriptAlias [mod_alias モジュール]

URL をファイルシステムにマップし、CGI スクリプトの実行を可能にする。 Options で ExecCGI を指定しなくてもよい。 CGI を実行するには、mod_cgi がロードされていなければならない。 DocumentRoot の外にマップすることも可能。

次の例では、/cgi-bin を /usr/local/apache2/cgi-bin へマップしている。 http://xxxx/cgi-bin/script.cgi のリクエストに対して、サーバは /4sr/local/apache2/cgi-bin/script.cgi を実行する。 注意! URL の最後に /(スラッシュ)を付けた場合は、http://xxxx/cgi-bin/ はエイリアスされ、http://xxxx/cgi-bin はエイリアスされない。

ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

Redirect [mod_alias モジュール]

クライアントが違う URL を取得するよう、サーバからクライアントに送るステータスコードとリダイレクト先 URL を設定する。

クライアントから URL に対するリクエストを受けると、サーバは指定したステータスコードとリダイレクトする URL をクライアントに返す。 クライアントは受け取ったリダイレクト先の URL をリクエストする。 クライアントに返すステータは、次のものを指定できる。 指定しない場合は、temp が使用される。

ステータスステータスコード備考
permanent301リソースが永久に移動したことを示すステータス
temp302一時的なリダイレクトステータス
seeother303リソースが他のもので置き換えられたことを示すステータス
gone410リソースが永久に削除されたことを示すステータス

次の例では、/foo へのリクエストに対し、サーバは ステータスコード 302 とりダイレクト先の URL http://example.com/foo を返す。

Redirect temp /foo http://example.com/foo

ステータスに gone を指定した場合は、リダイレクト先を指定しない。 gone ステータス(コード 400)を受け取ったクライアントは、エラーページを表示する。

Redirect gone /foo

IndexOptions [mod_autoindex モジュール]

ディレクトリインデックスに関する設定を行う。 IndexOptions ディレクティブを指定しないと、単純なディレクトリ・ファイルの一覧を表示する。 設定できる項目には、次のようなものがある。

FancyIndexing飾り付きインデックスをオンにする。項目ごとにソートするためのリンク、アイコン(AddIcon などで指定)、ファイル名、最終更新日、ファイルサイズ、説明(AddDescription で指定)が表示される。
FolderFirst[2.0.23 以降]ディレクトリの一覧を先に表示し、ファイルの一覧を後に表示する。FancyIndexing がオンのとき有効。
HTMLTable[2.0.23 以降]FancyIndexing がオンのとき、テーブルを使用する。
IconsAreLinksFancyIndexing がオンのとき、アイコンもファイルへリンクする。
IgnoreClinetクライアントからのクエリー変数(ソート順)を無視する。
ScanHTMLTitlesFancyIndexing がオンのとき、AddDescription ディレクティブでファイルの説明がされていない場合、HTML ドキュメントの <title> タグに囲まれた値を説明として使用する。
SuppressColumnSortingFancyIndexing がオンのとき、項目ごとにソートするためのリンクを無効にする。
SuppressDescriptionFancyIndexing がオンのとき、ファイルの説明を表示しない。
SuppressHTMLPreambleHeaderName ディレクティブで指定されたヘッダファイルを読み込むとき、ヘッダファイルに記述された <html> タグや <head> タグを無視して、内容だけインクルードする。
SuppressIcon[2.0.23 以降]FancyIndexing がオンのとき、アイコンを表示しない。
SuppressLastModifiedFancyIndexing がオンのとき、最終更新日を表示しない。
SuppressRules[2.0.23 以降]FancyIndexing がオンのとき、水平区切り線を表示しない。
SuppressSizeFancyIndexing がオンのとき、ファイルサイズを表示しない。
TrackModified[2.0.23 以降]レスポンスヘッダに Last-Modified と ETag を付加する。既存ファイルを更新しても、Last-Modified には反映されない。
VersionSortバージョン番号が正しくソートされるようにする。

次の例では、FancyIndexing と VersionSort を有効にしている。

IndexOptions FancyIndexing VersionSort

項目の前に +/- をつけることで、上位ディレクトリの設定を継承する。 次の例では、上位ディレクトリの設定に追加して SuppressSize を有効にしている。

IndexOptions +SuppressSize 

AddIconByEncoding [mod_autoindex モジュール]

ディレクトリインデックスに表示するアイコンを、MIME エンコーディングで選択する。

次の例は、x-compress と x-gzip 形式のファイルに対応するアイコンを設定している。 CMP がタグ(<img> タグの alt)、/icons/compressed.gif がイメージの URL。

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip 

注意! AddIconByEncoding、AddIconByType、AddIcon で指定され、最初にマッチしたアイコンが使用される。

AddIconByType [mod_autoindex モジュール]

ディレクトリインデックスに表示するアイコンを、MIME タイプで選択する。

次の例は、text/* 形式のファイルに対応するアイコンを設定している。 TXT がタグ(<img> タグの alt)、/icons/text.gif がイメージの URL。

AddIconByType (TXT,/icons/text.gif) text/*

注意! AddIconByEncoding、AddIconByType、AddIcon で指定され、最初にマッチしたアイコンが使用される。

AddIcon [mod_autoindex モジュール]

ディレクトリインデックスに表示するアイコンを、名前で選択する。 名前には、拡張子、ファイル名の一部、ファイル名全部、ワイルドカード、^^DIRECTORY^^(ディレクトリに対応)、^^BLANKICON^^(空白行に対応)が使用できる。 可能であれば、AddIconByType で指定するほうが望ましい。

次の例は、拡張子が .bin と .exe のファイルには /icons/binary.gif をアイコンとして使用し、ディレクトリには /icons/folder.gif をアイコンとして使用するよう設定している。

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/folder.gif ^^DIRECTORY^^

注意! AddIconByEncoding、AddIconByType、AddIcon で指定され、最初にマッチしたアイコンが使用される。

DefaultIcon [mod_autoindex モジュール]

AddIconByEncoding、AddIconByType、AddIcon で指定されなかったファイルに使用する、デフォルトのアイコンを指定する。

DefaultIcon /icons/unknown.gif

AddDescription [mod_autoindex モジュール]

ディレクトリインデックスに表示する説明を、名前で選択する。 名前には、拡張子、ファイル名の一部、ファイル名全部、ワイルドカードが使用できる。

次の例は、拡張子が .gz のファイルに GZIP compressed document という説明を表示するよう設定している。

AddDescription "GZIP compressed document" .gz

ReadmeName [mod_autoindex モジュール]

ディレクトリインデックスのフッタに挿入されるファイルを指定する。

ReadmeName README.html

HeaderName [mod_autoindex モジュール]

ディレクトリインデックスのヘッダに挿入されるファイルを指定する。

HeaderName HEADER.html

IndexIgnore [mod_autoindex モジュール]

ディレクトリ一覧を表示するとき、無視するファイルを指定する。 名前には、拡張子、ファイル名の一部、ファイル名全部、ワイルドカードが使用できる。

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

AddEncoding [mod_mime モジュール]

拡張子をエンコーディングタイプにマップする。

次の例では、拡張子が gz または tgz のファイルは、x-gzip でエンコードされていることを指定。

AddEncoding AddEncoding x-gzip gz tgz

AddLanguage [mod_mime モジュール]

拡張子を言語にマップする。 クライアントは、リクエストヘッダの Accept-Language で使用できる言語を指定する。 サーバがコンテントネゴシエーションを使用するとき、言語に対応した拡張子を持つドキュメントを返す。

使用できる言語は、ISO639 で定義されている 2 文字のアルファベットとか。 次のようなものがある。

en英語
frフランス語
deドイツ語
itイタリア語
ko韓国語
ptポルトガル語
esスペイン語
ja日本語
ruロシア語

次の例では、拡張子が ja のファイルは、日本語ドキュメントであることを指定している。

AddLanguage ja .ja

DefaultLanguage [mod_mime モジュール]

AddLanguage でマップされない拡張子を持つファイルを、どの言語とみなすかを指定する。 DefaultLanguage の指定がない場合、AddLanguage でマップされない拡張子を持つファイルは、言語属性をもたないとみなされる。

DefaultLanguage en

LanguagePriority [mod_negotiation モジュール]

クライアントがリクエストヘッダで言語の優先順位を指定しなかった場合、使用する言語の優先順位を指定する。 クライアントがリクエストヘッダで優先順位を指定した(HTTP/1.1 に準拠している)場合、このディレクティブの設定は無効になる。

LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw

ForceLanguagePriority [mod_negotiation モジュール]

コンテントネゴシエーションで単一のドキュメントを返すことができない場合の動作を設定する。 Prefer | Fallback | None のいずれかを指定できる。 Prefer と Fallback は同時に指定可能。

Prefer を指定すると、クライアントが複数の言語を同等の優先順位で指定した場合、LanguagePriority ディレクティブを使用して単一のドキュメントを決定する。 Prefer を指定しないと、ステータスコード 300(MULTIPLE CHOICE)を返す。

ForceLanguagePriority Prefer

Fallback を指定すると、クライアントが指定した言語のドキュメントが存在しない場合、LanguagePriority ディレクティブを使用して単一のドキュメントを決定する。 Fallback を指定しないと、ステータスコード 406(NOT ACCEPTABLE)を返す。

ForceLanguagePriority Fallback

AddCharset [core モジュール]

拡張子をキャラクタセットにマップする。 指定した拡張子を持つファイルにアクセスがあると、レスポンスヘッダ Content-Type にキャラクタセットを指定して返す。 使用できるキャラクタセットは、http://www.iana.org/assignments/character-sets を参照。 日本語のを使う場合は、次のようなキャラクタセットを指定する。

JISISO-2022-JP
シフト JISshift_jis
EUCEUC-JP

次の例では、.euc-jp という拡張子を EUC-JP キャラクタセットにマップしている。

AddCharset EUC-JP .euc-jp

AddDefaultCharset [core モジュール]

AddCharset でマップされない拡張子を持つファイルを、どのキャラクタセットで記述されたとみなすかを指定する。 AddDefautlCharset ディレクティブで、通常使用するキャラクタセットを指定するべき。 METAタグで指定したキャラクタセットは、無視される。

注意! デフォルトで ISO-8859-1 が指定されているので、日本語のページは文字化けする。 使用しているキャラクタセットに書き換えること。

次の例では、キャラクタセットに EUC を指定している。

AddDefaultCharset EUC-JP

HTTP レスポンスの Content-Type フィールドに、AddDefaultCharset で指定したキャラクタセットが追加される。

HTTP/1.1 200 OK
Data: ...
Server: Apache
Content-type: text/html; EUC-JP

ひとつのサイトに、異なるキャラクタセットのページを置くこともできる。 基本的には EUC を使用し、特定のディレクトリだけ Shift JIS を使用する場合は、次のように指定する。

AddDefaultCharset EUC-JP

<Directory /var/www/i>
    AddDefaultCharset Shift_JIS
</Directory>

AddType [mod_mime モジュール]

拡張子を MIME タイプにマップする。 TypesConfig で指定したファイルに定義されていないマップを追加するときに使用する。 同じ拡張子に対するマップが既に存在する場合、新しい MIME タイプで上書きされる。

AddType application/x-tar .tgz

AddHandler [mod_mime モジュール]

拡張子をハンドラにマップする。 指定した拡張子を持つファイルがリクエストされると、そのファイルはハンドラにより扱われる。 標準で組み込まれているハンドラは、次のとおり。

default-handler [core モジュール]静的コンテンツを扱うときにデフォルトで使用される
send-as-is [mod_asis モジュール]HTTP ヘッダのあるファイルをそのまま送る
cgi-script [mod_cgi モジュール]ファイルを CGI スクリプトして扱う
imap-file [mod_imap モジュール]イメージマップのルールファイルとして解析する
server-info [mod_info モジュール]サーバの設定情報を取得する
server-status [mod_status モジュール]サーバの状態報告を取得する
type-map [mod_negotiation モジュール]コンテントネゴシエーションのためのタイプマップとして解析する

次の例では、.cgi という拡張子を持つファイルは cgi-script ハンドラによって CGI スクリプトとして扱われ、実行される。

AddHandler cgi-script .cgi

ErrorDocument [core モジュール]

エラードキュメントをカスタマイズする。 ステータスごとに、テキストメッセージ、ローカル URL へのリダイレクト、外部 URL へのリダイレクトを指定できる。 テキストメッセージを指定する場合は ダブルクォーテーションで囲み、ローカル URL を指定する場合は /(スラッシュ)から記述する。

ErrorDocument 403 "Sorry can't allow you access today" 
ErrorDocument 401 /subscription_info.html
ErrorDocument 500 http://foo.example.com/cgi-bin/tester

BrowserMatch [mod_setenvif モジュール]

リクエストヘッダに含まれる User-Agent(ブラウザの種類)にもとづいて、環境変数を設定する。

デフォルトの httpd.conf に記述されている BrowserMatch ディレクティブは、ブラウザの種類によって起こる誤動作を防ぐために指定されている。 nookeepalive はキープアライブを使用しない。 downgrade-1.0 は HTTP/1.0 より新しいプロトコルのリクエストを HTTP/1.0 として扱う。 force-response-1.0 は HTTP/1.0 でリクエストされたとき、レスポンスを HTTP/1.0 で返す。 redirect-carefully はクライアントへのリダイレクトの送信を注意深くおこなう(?)。

BrowserMatch "Mozilla/2" nokeepalive

ProxyRequests [mod_proxy モジュール]

プロキシ機能の有効 / 無効を設定する。 http プロキシにするには mod_proxy_http サブモジュール、ftp プロキシにするには mod_proxy_ftp サブモジュール、ssl プロキシにするには mod_proxy_connect サブモジュールを組み込む。 (これらのサブモジュールは、configure するときに --enable-proxy を指定すると一緒にインストールされる) プロキシ機能を有効にすると、80 番ポートで要求を待つ。 デフォルト値は Off。

注意! ProxyRequests を On にするときは、プロキシに対するアクセス制御を <proxy> ディレクティブで設定すること。 さらに、ssl プロキシにするときは、<AllowCONNECT> ディレクティブを使用して接続を許可するポートを設定すること。 オープンなプロキシは、踏み台にされる危険性がある。

注意! プロキシがクライアントに返すレスポンスヘッダにも、DefaultCharset ディレクティブで指定したキャラクタセットがセットされる。

ProxyRequests Off

<Proxy> 〜 <proxy> [mod_proxy モジュール]

プロキシ機能に適用するディレクティブ(アクセス制御など)を接続先の URL ごとにグルーピングする。

次の例では、プロキシを経由したすべて URL への接続を、192.168.0.X のホストからのみ許可している。

<Proxy *>
    Order allow,deny
    Allow from 192.168.0
</Proxy>

次の例では、プロキシを経由した http://* への接続を、192.168.0.X のホストからのみ許可している。

<Proxy http://*>
    Order allow,deny
    Allow from 192.168.0
</Proxy>

AllowCONNECT [mod_proxy モジュール]

SSL プロキシで CONNECT メソッドを許可するポートを指定する。 443 番ポート(https)と563 番ポート(snews)だけ許可するのが望ましい。

AllowCONNECT 443 563

ProxyVia [mod_proxy モジュール]

プロキシのレスポンスヘッダに含まれる Via フィールドの扱いを指定する。 Via フィールドには、経由したプロキシサーバの情報が格納される。 指定できるのは On(Via フィールドにホストを追加) | Off(なにもしない) | Full(Via フィールドにホストと Apache バージョンを追加) | Block(Via フィールドを削除)のいずれか。 デフォルト値は Off。

ProxyVia Off

ProxyPass [mod_proxy モジュール]

リモートサーバを、ローカルサーバの URL スペースにマップする。 指定した URL スペースへのリクエストに対し、サーバはクライアントの代理としてリモートサーバへリクエストを転送する。 リモートサーバはレスポンスをサーバへ返し、サーバはクライアントにレスポンスを転送する。 クライアントから見ると、リモートサーバは隠蔽されている。

注意! ProxyRequests ディレクティブを Off にしても、ProxyPass ディレクティブには影響しない。

次の例では、/foo/ を http://www.example.com/ にマップしている。 /foo/index.html へのリクエストは http://www.example.com/index.html へのリクエストに変換され、www.example.com へ転送される。

ProxyPass /foo/ http://www.example.com/

ProxyPassReverse [mod_proxy モジュール]

リモートサーバから送られてくるレスポンスヘッダを調整する。 リモートサーバからのレスポンスヘッダに Location フィールドや Content-Location には、リモートサーバの URL が含まれる。 ProxyPass と一緒に ProxyPassReverse を指定すると、レスポンスヘッダに含まれる URL をサーバの URL に修正してくれる。 これにより、リモートサーバでリダイレクトがあっても、プロキシサーバを経由した接続が確保できる。

次の例では、ProxyPass ディレクティブで /foo/ を http://www.example.com/ にマップするとともに、ProxyPassReverse ディレクティブを指定している。 リモートサーバに /dir ディレクトリが存在し、クライアントから http://localhost/foo/dir にリクエストがあった場合、サーバは http://www.example.com/dir に変換してリモートサーバにリクエストを転送する。 dir はディレクトリなので、リモートサーバは正しい URL でのアクセスを要求するレスポンスヘッダ(ステータスコード 302、Location フィールド http://www.example.com/dir/)をサーバに返す。 サーバは、レスポンスヘッダの Location フィールドを http://localhost/foo/dir/ に修正してからクライアントに返す。

ProxyPass /foo/ http://www.example.com/
ProxyPassReverse /foo/ http://www.example.com/

CacheEnable [mod_cache モジュール]

使用するキャッシュタイプとキャッシュする URL を指定する。 キャッシュタイプは、disk または mem を指定することができる。 URL は指定の仕方がわからない.... / を指定すると、全部キャッシュしてくれるらしい。

注意! CacheEnable ディレクティブを指定しないと、キャッシュされないらしい。 デフォルトの httpd.conf には、このディレクティブがない。

CacheEnable disk /

CacheRoot [mod_disk_cache モジュール]

キャッシュファイルを作成するディレクトリを指定する。 プロキシ機能と一緒に使用するとよい。

mod_disk_cache モジュールには、mod_cache モジュールが必要。 configure するときに、--enable-cache と --enable-disk-cache を指定する。

CacheRoot /usr/local/apache2/proxy

CacheSize [mod_disk_cache モジュール]

キャッシュで使用するディスクスペースを、キロバイトで指定する。 デフォルト値は 1000000。

CacheSize 1000000

CacheGcInterval [mod_disk_cache モジュール]

有効期限切れのキャッシュを削除してディスクスペースを空けようとする(ガベージコレクションという)時間の間隔を、時(hour)で指定する。 現在、このディレクティブは実装されていない。

CacheGcInterval 4

CacheMaxExpire [mod_cache モジュール]

キャッシュが有効な最大時間を、秒で指定する。 デフォルト値は 86400(1 日)。

CacheMaxExpire 86400

CacheLastModifiedFactor [mod_cache モジュール]

ドキュメントの最終更新日を元に、キャッシュの有効期限を設定する。 ドキュメントが最後に更新されてから経った時間と、このディレクティブで指定した値を乗じた値が、キャッシュの有効な時間になる。 キャッシュが有効な時間は、CacheMaxExpire ディレクティブで指定した値を超えることはない。 デフォルト値は 0.1。

CacheLastModifiedFactor 0.1

CacheDefaultExpire [mod_cache モジュール]

キャッシュが有効なデフォルト時間を、秒で指定する。 デフォルト値は 3600(1 時間)。

CacheDefaultExpire 3600

Include [core モジュール]

他の設定ファイルを、httpd.conf の中に取り込む。

次の例では、SSL のための設定ファイル ssl.conf を取り込んでいる。

Include conf/ssl.conf

NameVirtualHost [core モジュール]

名前ベースのバーチャルホストのためのリクエストを受信する IP アドレスとポートを指定する。 名前ベースのバーチャルホストを使用するとき、NameVirtualHost ディレクティブは必須。 注意! SSLを併用するときは、"*:80"のようにポートも指定すること。

次の例では、すべてのインターフェースでリクエストを受信する。

NameVirtualHost *

<VirtualHost> 〜 </VirtualHost> [core モジュール]

指定されたホスト名・ IP アドレス・ポートに適用するディレクティブをグルーピングする。

次の例は、リクエストされた IP アドレス(およびポート)ごとに仮想ホストを設定している。 http://1.2.3.4/index.html 宛のリクエスト対し、/var/www/html1/index.html を返す。 http://5.6.7.8/index.html 宛のリクエスト対し、/var/www/html2/index.html を返す。

Listen 1.2.3.4:80
Listen 5.6.7.8:80

<VirtualHost 1.2.3.4:80>
    DocumentRoot /var/www/html1
    ....
</VirtualHost>

<VirtualHost 5.6.7.8:80>
    DocumentRoot /var/www/html2
    ....
</VirtualHost>

次の例は、リクエストされた ホスト名ごとに仮想ホストを設定している。 VirtualHost ディレクティブで * を指定しているので、すべての IP アドレス・ポートにマッチする。 http://www.example1.com/index.html 宛のリクエストに対し、/var/www/html1/index.html を返す。 http://www.example2.com/index.html 宛のリクエストに対し、/var/www/html2/index.html を返す。

どちらの ServerName ディレクティブにもマッチしない場合、最初の VirtualHost ディレクティブが適用される。 たとえば、http://1.2.3.4/index.html 宛のリクエストに対し、最初の VirtualHost の中で指定された /var/www/html1/index.html を返す。

Listen 80

NameVirtualHost 1.2.3.4:80

<VirtualHost *>
    DocumentRoot /var/www/html1
    ServerName www.example1.com
    ....
</VirtualHost>

<VirtualHost *>
    DocumentRoot /var/www/html2
    ServerName www.example2.com
    ....
</VirtualHost>

注意! SSLを併用するときは、"*:80"のようにポートも指定すること。 mod_ssl を使用した場合は、ホスト名ごとの仮想ホストは設定できない。

RewriteEngine [mod_rewrite モジュール]

URL書き換えエンジンを有効(On)または無効(Off)にする。 デフォルト値はOff。

RewriteRule [mod_rewrite モジュール]

URL書き換えルールを指定する。 正規表現を使用できる。

RewriteRule ^/QUERY_([0-9]*)_([0-9]*)\.html /query.cgi?p1=$1&p2=$2 [PT]

上記の例では、"/QUERY_111_222.html"を要求すると、"/query.cgi?p1=111&p2=222"に書き換えられる。 最後の"[PT]"はPassThroughのことで、内部的に書き換えることを指定する。 これは、AliasディレクティブやRedirectディレクティブより前に処理される。 "[R]"(Ridirect)を指定すると外部的なリダイレクト(クライアントにコード302を返す)になる。

RewriteLog [mod_rewrite モジュール]

URL書き換えのログを出力するファイルを指定する。

RewriteLog logs/rewrite.log

RewriteLogLevel [mod_rewrite モジュール]

URL書き換えのログのレベルを指定する。 '0'を指定するとログを出力せず、'9'以上を指定するとすべての情報をログとして出力する。

RewriteLogLevel 2

[サーバの実験室 Slackware]