|
これら設定パラメータはApacheの中核となる機能で、いつでも利用することが出来ます。
AccessConfig conf/access.conf
サーバはResourceConfigファイルを実行してからこの命令を実行します。
FilenameはServerRootの相対パスとなります。
この特徴は以下の様に設定すると無効に出来ることです:
AccessConfig /dev/null
これまではこのファイルは<Directory>セクションにだけで設定されています;実際にこのファイルは現在server configで許可されたいくつかのサーバの設定含むことが出来ます。
AccessFileName .htaccessサーバがクライアントにドキュメントを表示させるとき、もしアクセスコントロールファイルがそのディレクトリに対してアクセスすることを可能にしているならば、サーバはドキュメントに指定されたディレクトリパスにこの名前でアクセスコントロールファイル(.htaccess)を探します。 例:
AccessFileName .acl
サーバは/usr/local/web/index.html,を表示させる前に、もし以下の様な記述がなければ、/.acl、 /usr/.acl、 /usr/local/.acl、 /usr/local/web/.aclを実行します。
<Directory />
AllowOverride None
</Directory>サーバは普段使用していないコンパイルされたモジュールを使用することが可能です。この命令はそれらのモジュールを使用可能にするために使用されます。サーバはあらかじめロードされた実行可能なモジュールのリストを実行します。このリストはClearModuleList命令によって消去されます。
AllowOverride Allサーバが.htaccessファイル(AccessFileNameによって指定されたファイル)を見つけると、サーバはより早くアクセス情報を上書き出来るファイルに設定された命令を知ろうとします。
OverrideはNoneに設定することが出来ます。それはサーバがそのファイル(.htaccess)を実行しないように設定する場合と、サーバが全ての命令を許す場合とあるいは次の様な場合です:
この命令はディレクトリに対する認証の範囲の名前を設定します。この認証が与えられるユーザは許可されるユーザーネームとパスワードを知っているクライアントに対して与えられます。実行するためには、AuthType と require の命令、AuthUserFile と AuthGroupFile のような命令を伴わなければなりません。
この命令はあるディレクトリに対する認証機構の種別を選択します。Basic だけが今のところ実行することが出来ます。実行するためには、AuthNameとrequire の命令、AuthUserFileとAuthGroupFile のような 命令が伴わなければなりません。
BindAddress *UNIX の http サーバは、接続のためにサーバマシンの全ての IP アドレスか、またはサーバマシンの唯一のIPアドレスのどちらかを読み込むことができます。saddr は以下の通りです。
値が * のとき、サーバはあらゆる IP アドレスにコネクションするでしょう。その他のときは特定の IP アドレスを読み込みます。
たった一つのBindAddress命令が使われます。Apacheが聞いてくるアドレスとポートのより多くの制御のためには、BindAddressの代わりにListen命令を使います。
BindAddressは<VirtualHost>セクションを使う代わりに、様々な独立サーバを使うvirtual hostsをサポートする、二つのうちの一つの方法として使われます。
参照:
DNS Issues
参照:
Setting which addresses and ports Apache uses
サーバは既に組み込まれた実行可能なモジュールを実行します。この命令はそのリストをクリアします。AddModule命令によってそのリストが実行されていることが前提です。
ContentDigest offCompatibility: ContentDigest is only available in Apache 1.1 and later
この命令はRFC1864でそれぞれ定義されたRFC2068としてContent-MD5ヘッダの生成を可能にします。
MD5は任意の長さのデータである"message digest" (しばしば"fingerprint"と呼ばれる)の計算についてのアルゴリズムで、メッセージダイジェストでの変更を反映するデータの変更は極秘です。
Content-MD5ヘッダは実体のend-to-endメッセージ完全チェック(MIC)を供給します。プロキシーかクライアントは転送中の実体の偶発的な変形を検出するためにこのヘッダをチェックするかもしれません。
Example header:
Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
これはメッセージダイジェストがあらゆる要求について計算されるので、サーバにパフォーマンスの問題を引き起こします(値はキャッシュされません)。
Content-MD5はコアによって受け取られたドキュメントについてのみ送信されるもので、モジュールによるものではありません。例えば、CGIスクリプトからの出力であるSSI ドキュメントとバイト幅のレスポンスはこのヘッダを持っていません。
これはコアをダンピングする前にApacheがスィッチを試みるディレクトリを制御します。デフォルトはServerRootディレクトリにありますが、サーバの作動によってユーザによる書き換えをするべきではないので、コアのダンプは普通書かれません。もしデバッグのためにコアのダンプを望むのなら、異なったロケーションにそれを置くためにこの命令を使うことができます。
DefaultType text/htmlMIMEタイプで定義されていないタイプのドキュメントを提供することをサーバが求められるときがあります。
サーバはタイプがわからない場合に、DefaultTypeを使ってそのドキュメントのcontent-typeをクライアントに知らせなければなりません。例えば:
DefaultType image/gif
これは .gif の拡張子がないgifイメージのファイルを含んだディレクトリに適用されます。<Directory> と </Directory> はそのディレクトリで指定されたディレクトリとサブディレクトリに対してのみ適用される命令のグループ化ために使用されます。そのディレクトリ内では許可された命令のみが使用可能となります。Directoryは相対パスか、またはワイルドカードのどちらかです。ワイルドカードの中で「?」はある一文字に一致し、「*」はある連続した文字列に一致します。Apache 1.3のように、シェルの中に`[]'のようなカッコを使うことができます。また、Apache 1.3のような`/'と一致するようなワイルドカードがなくても、Unixシェルの動きにより似てきます。例:
<Directory /usr/local/httpd/htdocs> Options Indexes FollowSymLinks </Directory>
Apache 1.2かそれ以上: 拡張した正規表現は「~」文字もまた使用することが出来ます。 例えば:
<Directory ~ "^/www/.*/[0-9]{3}">
上記は/www/にある3つの数字から成るディレクトリ名に一致します。
もし複数のディレクトリがドキュメントを含んだそのディレクトリ(またはその親ディレクトリ)に一致するときは、点在する.htaccessファイルからの命令で、いちばん最初の最も短い命令に対して適用されます。例えば
<Directory />
AllowOverride None
</Directory>
<Directory /home/*>
AllowOverride FileInfo
</Directory>
/home/web/dir/doc.html へアクセスするための設定は:
ディレクトリセクションの通常表記はApache1.2と1.3によりわずかに違ってハンドルされます。Apache1.2では標準的なディレクトリセクションに分散され、コンフィギュレーションファイルに現れた順に割り当てられます。それらは一度だけ割り当てられて、最も短い一致が起こると、割り当てます。Apache1.3では通常表記が全ての標準セクションの割り当てが終わるまで判断されません。それから全ての通常表記はコンフィギュレーションファイルに現れた順にテストされます。例えば
<Directory ~ abc$>
... directives here ...
</Directory>
アクセスされたファイル名が/home/abc/public_html/abc/index.htmlであると仮定してみると、サーバは/、/home、/home/abc、/home/abc/public_html、/home/abc/public_html/abcの順にそれぞれ判断します。Apache1.2では、/home/abcが判断されて、通常表記が一致して割り当てられます。Apache1.3では通常表記はツリーでのそのポイントを全く判断しません。全ての標準<Directory>sと.htaccessファイルが割り当てられるまで判断しません。それから通常表記は/home/abc/public_html/abcに一致して、割り当てられます。
<Directory />についてのデフォルトのApacheのアクセスはAllow from Allであることに注意してください。これはApacheがURLからマップされたなんらかのファイルを受け取ることを意味しています。
<Directory />
Order Deny,Allow
Deny from All
</Directory>
のようなブロックについてこれを変更することを推奨しており、アクセスを可能にしたいディレクトリにこれを上書きします。詳細についてはSecurity Tipsを参照してください。
一般的にディレクトリセクションはaccess.confファイルに生じますが、なにかのコンフィギュレーションファイルに現れるかもしれません。<Directory> 命令はネストすることができず、<Limit>セクションに現れることができません。参照:リクエストが受け取られる時、これらの異なったセクションがどのように結合しているのかは How Directory, Location and Files sections workを参照してください。
<DirectoryMatch> と </DirectoryMatch> は名前が付けられたディレクトリとそのサブディレクトリに対してのみ割り当てる命令のグループを同封するために使われ、<Directory>としては同じものです。しかしながら、引数としては通常表記を取ります。例えば:
<DirectoryMatch "^/www/.*/[0-9]{3}">
三つの数から構成されている/www/にあるディレクトリと一致します。
参照:
通常表記が通常の<Directory>sでどのように入り混じっているのかについての記述は<Directory>を参照してください。
参照:リクエストが受け取られる時、これらの異なったセクションがどのように結合しているのかは
How Directory, Location and Files sections workを参照してください。
DocumentRoot
/usr/local/apache/htdocsこの命令は、httpd がファイルを提供するディレクトリを設定します。もし Aliasの命令によって一致しなければ、サーバまでのパスを設定するために、要求されたURLからドキュメントルートへのパスを付加します。例えば:
DocumentRoot /usr/web
このときhttp://www.my.host.com/index.htmlへのアクセスが/usr/web/index.htmlへのアクセスを示しています。
DocumentRootがスラッシュで終わっているとき(すなわち "DocumentRoot /usr/web/")、 mod_dirに問題を引き起こすバグが存在します。ですからそれを避けて下さい。
トラブルやエラーが発生したとき、Apache は四つの内の一つを実行するように設定することが可能です。
2-4は HTTP のレスポンスコード、メッセージかあるいはURLに従ってErrordocument を使って構成されます。
このcontextのMessagesはシングルクォート(")で始まり、メッセージ自体の部分を構成していません。Apache は時々problem/errorの点で付加的な情報を提供します。
URLは内部URLに対してスラッシュ(/)で始まるか、クライアントが決定できるフルの URLで始まります。例:
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
たとえドキュメントが最後には同じサーバ上にあったとしても、リモートのURL(すなわちその前にある"http"のような方法のもの)に対してポイントするErrorDocumentを特定すると、Apacheはドキュメントがどこにあるのかを教えるために、クライアントにリダイレクトを送信することに注意してください。
これはいくつかの密接な関係があり、"ErrorDocument 401"命令を使っていればローカルドキュメントに関係しているであろうことは最も重要なことです。これは本来のHTTPの基本的な認証のしくみからもたらされます。
参照: documentation of customizable responses.
ErrorLog logs/error_logエラーログ命令は、サーバに発生したエラーを記録するファイル名を設定します。 もしファイル名がスラッシュ(/)で始まっていなければ、ServerRoot に対して相対パスにあると仮定されます。 例:
ErrorLog /dev/null
これは事実上、エラーの記録を中止します。セキュリティ: もしログファイルがストアされているディレクトリが、サーバを起動しているユーザ以外の誰かによって書き込みが可能なら、なぜセキュリティが容易に破られるのかについての詳細なドキュメントsecurity tipsを参照してください。
<Files>命令は、ファイルネームによるアクセスコントロールを設定します。<Directory>命令や、<Location>命令に匹敵します。</Files>命令と対応させます。与えられたファイルネームに対して適用される命令は内部でリストになっています。 </Files>セクションは<Directory>セクションと .htaccessファイルが読み込まれた後、<Location>セクションの前にコンフィグレーションファイルに存在する命令を処理します。
filenameはあるファイルネームまたは、ワイルドカードを含みます。「?」はある一文字に一致し、「*」はある連続した文字列に一致します。通常の表記よりも拡張された正規表現もまた「~」文字を付加して使用する事が出来ます。例えば:
<Files ~ "\.(gif|jpe?g|png)$">最も一般的なインターネットのグラフィックのフォーマットに一致するでしょう。しかしApache 1.3 とそれ以降では、<FilesMatch> が好ましいです。
.htaccessファイルの内部で使われる<Directory>セクションは、<Location>セクションと<Files>セクションとは違うことに注意してください。これはユーザーにファイルごとのレベルで彼ら自身のファイルへのアクセスをコントロールすることを許可します。.htaccess ファイル内で使われる時に、もしfilenameがスラッシュ(/)で始まっていなければ、適用されるディレクトリは自動的にルートへ置かれます。
参照:リクエストが受け取られる時、これらの異なったセクションがどのように結合しているのかは How Directory, Location and Files sections workを参照してください。
ちょうど<Files>命令が行うように、<FilesMatch>命令はファイル名によるアクセスコントロールを提供します。例えば:
<FilesMatch "\.(gif|jpe?g|png)$">
最も一般的なインターネットのグラフィックフォーマットと一致します。
参照:リクエストが受け取られる時、これらの異なったセクションがどのように結合しているのかは How Directory, Location and Files sections workを参照してください。Group #-1Group命令は、サーバがコマンドに答えるグループを設定します。この命令を使用するためにはスタンドアローンサーバがルートとして初期に作動していなければなりません。 Unix-groupは以下の内の一つです:
作動しているサーバに特別に新しいグループをセットアップすることを推奨します。管理者はユーザーを使いませんが、これが常に可能で、望ましいわけではありません。 注意:もしルートでないユーザーとしてサーバを立ち上げたのなら、指定したものに変更するのを失敗するか、代わりにオリジナルユーザーのグループとして実行し続けることになります。
特記:<VirtualHost>にあるこの命令の使用は、適切に configure されたSUEXEC wrapperを必要とします。この方法でCGIsが作動するにつれて<VirtualHost>内部で使われるグループだけは、影響されます。Non-CGI要求はまだメインのグループ命令で特定されるグループとして処理されます。
SECURITY:セキュリティーについては User を参照して下さい。
HostNameLookups offdouble available only in Apache
1.3 and above.on prior to Apache
1.3.
ホスト名はログされるのでこの命令はDNSルックアップを可能にします(そしてREMOTE_HOSTにあるCGIs/SSIsにパスされます)。double値は二重逆引き DNSを行うことと関係しています。これは逆引きルックアップが行われた後に、 正引きルックアップが結果として行われることです。少なくとも、正引きルックアップにあるipアドレスはオリジナルのアドレスと一致しなければなりません。
("tcpwrappers"の専門用語でこれはPARANOIDと呼ばれます)
設定とは関係なく、ホスト名によるアクセスをコントロールするためにmod_accessが使われると、二重逆引きルックアップが作動するでしょう。これはセキュリティにとって必要なことです。この二重逆引きの結果は、HostnameLookups doubleを設定しなければ、一般的には役に立ちません。例えば、もしHostnameLookups onとリクエストだけがホスト名制限によってプロテクトされているものになるなら、二重逆引きが失敗かそうでないかに関わらず、CGIsはまだREMOTE_HOSTに一重逆引きをパスされるでしょう。
この命令のデフォルトは1.3へのApacheの以前のバージョンではonでした。逆引きルックアップがおこなわれることを本当には必要としない、これらのサイトのネットワークトラフィックを保存する目的でoffに変更されました。ルックアップが引き起こす損害を受けないので、エンドユーザにとっては良いことです。重いロードサイトがこの命令をoffにしておくべきなのは、DNSルックアップに相当な時間がかかるからです。/supportディレクトリで与えられたlogresolveユーティリティは、オフラインでログされたIPアドレスからホスト名をルックアップするために使われます。
IdentityCheck offこの命令はそれぞれのコネクションに対してリモートユーザネームのRFC931-compliantログを可能にします。そのクライアントマシーンはinetdで起動するか、または何か類似したもので起動します。この情報はaccess logに記録されます。Booleanはonかoffのどちらかです。
その情報は基本的なトラッキングの使用以外には、信頼するべきではありません。
あらゆるリクエストは、これらのルックアップの一つを必要としているので、これはサーバにアクセスする深刻な問題を引き起こすことに注意してください。ファイアウォールが複雑になると、それぞれのルックアップは恐らく失敗し、それぞれのヒットに潜在性の30秒を加えます。それで一般的にこれは、インターネットからパブリックサーバでのアクセスをしにくくします。
<IfModule test>...</IfModule>セクションは条件を表す命令を示すために使用されます。IfModuleセクション内部の命令は、もしtestが本当なら、処理だけが行われます。もしテストが間違っていれば、スタートとエンドマーカーの間にある全ては無視されます。
<IfModule>セクションの命令のtestは二つの形式のうちの一つが使用可能です:
前者の場合、もしmodule nameと名付けられたモジュールがApacheでコンパイルされると、スタートとエンドマークの間の命令は処理だけが行われます。もしmodule nameがコンパイルされないと、二番目の場合、テストを逆にして、命令の処理だけを行ないます。
module nameのargumentはモジュールのファイルネームによって与えられたモジュールネームであり、その時にコンパイルされていました。例えば、mod_rewrite.c.
<IfModule>セクションは nest-ableで、単に multiple-module テストの手段として使われます。
この命令はサーバのコンフィギュレーションファイル内部から、他のコンフィギュレーションファイルの読み込みを許可します。
KeepAlive 5KeepAlive Onこの命令はKeep-Aliveサポートを可能にします。
Apache 1.1: リクエストごとに許可する、あなたがApacheに要求するリクエストの最大数をmax-requestsに設定してください。限界値はクライアントがあなたのサーバリソースを一人占めしようとするのを防ぎます。サポートを無効にするにはこれを0に設定してください。
Apache 1.2 and later: "On"は持続的な接続を可能にし、"Off"で不可能にします。MaxKeepAliveRequests命令を参照してください。
KeepAliveTimeout 15
そのコネクションを終了する前に、Apacheが次のリクエストを待つ秒数です。一度コマンドを受け取ると、Timeout命令が適用されることにより、タイムアウトの値が指定されます
<Limit>と</Limit>はアクセスをコントロールする命令をグループ化するために使用されます。そしてそれはmethodが有効なHTTPの方法である特定のアクセス方法にのみ適用されます。 命令のいくつかは<Limit>や、 <Directory>を除いたいくつかの命令を使用することが可能です。ほとんどは
Listen命令は、一つ以上の IP アドレスやポートを認識するように Apache に指示します。デフォルトでは全てのIPインターフェイスのリクエストに応答しますが、Port命令によって与えられたポートのみに応答します。
サーバに対するポイントがまだ作動することをApacheが生じるURLsであるので、まだPort命令を必要とするかもしれないことに注意してください。
多様なListen命令が、アドレス番号と聞いてくるポートを特定するために使われるかもしれません。サーバはリスト表示されたアドレスとポートからリクエストに反応します。
例えば、port80とport 8000でサーバ認証接続を作るために:
参考:
DNS Issues
ペンディングしている接続の行列の最大長です。普通はチューニングは必要でないし、要求されていませんが、システムのいくつかではTCP下でSYNが殺到しているときにこれを増やすことが望ましいです。
<Location>命令は、URL によるアクセス制御をします。それは<Directory>命令と同等で、</Location>に対応しています。与えられた URL に適用される命令は、内部で読み込まれます。<Location>セクションは<Directory>セクションと.htaccessファイルが読まれた後にコンフィグレーションファイルに存在するその他で処理されます。 HTTP 機能の方法の結果として、URL prefixは proxy からのリクエストを保存し、/path/形式になるはずですが、http://servername は含みません。ディレクトリ(個人ファイルやファイル数)を保護する必要はなく、ワイルドカードを含むことができます。ワイルドカードは"?"が一文字、"*"が一 続きの数文字を表しています。
Apache 1.2 and above:
拡張通常表記は "/extra/data"か"/special/data"のサブストリングを含むURLsと一致します。しかしながら、Apache 1.3とそれ以上では<LocationMatch>の使用が好ましいです。 Location 機能は特に SetHandler命令とセットで使うと有効す。例えば、statusの命令を可能にし、foo.com のブラウザからの命令のみを許可するためには以下のように記述してください:
参照:リクエストが受け取られる時、これらの異なったセクションがどのように結合しているのかは
How Directory, Location and Files sections workを参照してください。
<LocationMatch>命令は<Location>に対するのと同じ方法で、URLによるアクセスコントロールを与えます。しかしながら、単純な記述の代わりに引数として通常表記を用います。例えば: サブストリング"/extra/data" か"/special/data"を含んでいるURLsと一致します。
LockFile命令はApacheがUSE_FCNTL_SERIALIZED_ACCEPTかあるいはUSE_FLOCK_SERIALIZED_ACCEPT のいずれかでコンパイルされた時使われるlockfileへのパスを設定します。この命令は通常デフォルトの値のままにすべきです。もし
MaxClients命令は同時にリクエスト数の限度数を設定します;作成される子サーバプロセスの数以下です。 MaxKeepAliveRequests命令はKeepAliveがonの時接続毎に許可されたリクエスト数を制限します。 もし"
MaxRequestsPerChild命令は個々の子サーバプロセスが取り扱うリクエストの範囲を設定する。MaxRequestPerChild が設定されると、その子プロセスは停止します。もしMaxRequestsPerChild が0だと、そのプロセスは停止しません。
MaxRequestsPerChild を0以外に設定すると、2つの有益な効果があります:
MaxSpareServers命令はidleの子サーバプロセスの最大数を設定します。idleプロセスはリクエストを処理しないものの一つです。もし MaxSpareServers の idleよりも多い場合には、親プロセスは、過剰な処理を停止するでしょう。
このパラメータの設定は非常に混雑したサイトにのみ実行すべきです。このパラメータの数を大きく設定することはあまり良いアイデアとはいえません。
MinSpareServersとStartServersを参照してください。
MinSpareServers命令はidle子サーバプロセスの最少値を設定します。 idle プロセスはリクエストを処理しないものの一つです。もし MinSpareServers の idle よりも少ない場合には、上位の処理が、一秒ごとの最大速度で新しい下位の処理を実行します。
このパラメータの設定は非常に混雑したサイトにのみ実行すべきです。このパラメータの数を大きく設定することはあまり良いアイデアとはいえません。
MaxSpareServersとStartServersを参照してください。
Compatibility: NameVirtualHost is only available in Apache 1.3 and later
NameVirtualHost命令はname-based virtual hostsをコンフィギュアしたいのなら必要とされる命令です。
addrはホスト名ですが、いつも使うIPアドレスが推奨されます。例えば
任意にname-basedのバーチャルホストが使われるべきポート番号を指定することができます。例えば
Options命令はサーバ制御を特定のディレクトリ内でのみ有効にする命令です。
optionがNoneに設定されている場合は、特別な制御は使用不可であるかあるいは、次のような場合があります。
例えば, + と - の記号なしでは:
PidFile 命令はデーモンのプロセスidをサーバが記録するファイルを設定します。もしファイルネームがスラッシュ(/)で始まっていなければ、ServerRootが親ディレクトリであると仮定されます。PidFileはstandaloneモードでのみ使用されます。
サーバにシグナルを送るためにしばしば使われ、サーバが閉じていると、ErrorLogとTransferLogを再び開き、configuration ファイルを再び読み込みます。これはPidFileにリストされた プロセスidにSIGHUP(kill -1) シグナルを送ることで実行されます。
PidFileはログファイル配置とセキュリティについての警告の支配を受けています。
Port命令はサーバが起動するときのネットワークポート番号を設定します。 numberは0から65535までです。いくつかのポート番号は(特に1024以下)特別なプロトコルのために使用されます。ポート番号が定義されているリストである/etc/servicesを参照してください。httpdプロトコルのための標準ポート番号は80です。
Port命令は二つの運動を持っており、一つはNCSA後方互換性に必要なものです(そしてApacheのプロセスの実行時情報で混乱します)。
ポートのプライマリの動作はServerName命令と似ていると考えるべきです。ServerNameとPortは一緒にサーバのcanonicalアドレスになるようなどうしたら良いかを指定します。
ポート番号80はUnixの特定のポートの1つです。1024以下のポート番号はすべてシステムが使用するために確保されています。例えば、通常(non-root)のユーザはそれらを使用する事が出来ません。;
代わりに彼らはそれ以上のポート番号を使用することが出来ます
ポート番号80を使用するためには、ルートでサーバを起動しなければなりません。ポートにバインドした後とリスエストを受ける前に、ApacheはUser命令によって設定されたより低い権限を持ったユーザに変更します。
もしポート番号80を使用することが出来ないなら、使用されていない他のポート番号を選んでください。 Non-rootユーザは1023より大きいポート番号を選択しなければなりません。例えば8000のような。
SECURITY: もしrootでサーバを起動するならば、Userをrootに設定していないことを確認してください。接続をハンドリングしている間にrootでサーバを起動するなら、サイトはありがちなセキュリティー攻撃に対してオープンであるかもしれません。
この命令は、認証されたユーザがあるディレクトリにアクセスできるかどうかを選択します。許可されたsyntaxesは:
指定されたユーザだけがディレクトリにアクセスできます。
指定されたグループのユーザだけがディレクトリにアクセスできます。
全ての正当なユーザがディレクトリにアクセスできます。
もし
サーバは httpd.confファイルを実行した後、このファイルを実行します。FilenameはServerRootと相対パスをとります。これは以下のように設定すると無効に出来ることです:
AccessConfig も参照して下さい。
1か2のパラメータを取ります。最初のパラメータは全ての処理に対するソフトリソース制限を設定し、2番目のパラメータはリソース制限の最大値を設定します。パラメータは数字か、サーバに示されているmaxのどちらかです。その制限はオペレーティングシステムのコンフィグレーションによって許可された最大値が設定されます。'最大リソース制限を設定するのはーバがルートとして作動している時か、起動時です。
CPUリソース制限はプロセス毎に秒単位で表示されます。
RLimitMEMかRLimitNPROCを参照してください。
1か2のパラメータを取ります。最初のパラメータは全てのプロセスのソフトリソース制限を設定し、2番目のパラメータはリソース制限の最大値を設定します。パラメータは数字か、サーバに示されているmaxのどちらかです。その制限はオペレーティングシステムのコンフィグレーションによって許可された最大値が設定されます。最大リソース制限を行なうのはサーバがルートとして作動している時か、起動時です。
メモリーリソースはプロセス毎にバイト単位で表示されます。
RLimitCPUかRLimitNPROCを参照してください。
1か2のパラメータを取ります。最初のパラメータは全てのプロセスに対するソフトリソース制限を設定し、2番目のパラメータはリソース制限の最大値を設定します。パラメータは数字か、サーバに示されているmaxのどちらかです。その制限はオペレーティングシステムのコンフィグレーションによって許可された最大値が設定されます。最大リソース制限を行なうのはサーバがルートとして作動している時か、起動時です。
プロセス制限はユーザごとにプロセス数を制限します。
注: もしCGIプロセスがwebサーバのユーザIDではないユーザIDで動作しているならば、この命令はサーバ自身が作成出来るプロセス数を制限します。これはerror_log の中のcannot forkメッセージによって確認出来ます。
Access policy if both allow and require used.
パラメータは'all'か'any'のどちらかです。この命令は、もし特定の領域へのアクセスがusername/passwordとクライアントホストアドレスの両方によって制限されると、有効です。この場合、デフォルトの動き("all")はクライアントがアドレスアクセス制限をパスし、正当なユーザ名とパスワードを入力することを必要とします。"any"オプションで、もしホスト制限をパスするか正当なユーザ名とパスワードの入力するかをすれば、クライアントはアクセスを認めるられるでしょう。これは領域をパスワード制限するために使われますが、パスワード入力のためのプロンプトがない、特定のアドレスからのクライアントは通します。
ScoreBoardFile命令は、サーバがその子と親との間の通信を使うファイルを置くためのアーキテクチャで必要とされます。アーキテクチャがスコアボードファイルを必要としているかどうかを明らかにする最も簡単な方法はApacheを動かして、命令によって名づけられたファイルを作成するかどうかを見ることです。もしアーキテクチャがそれを必要とするなら、一つ以上のApacheの実行によってこのファイルが同じ時に使われることを保証しなければなりません。
もし ScoreBoardFile を使わなければならないなら、それを RAM ディスク上に置いて速度を改善できるかもしれません。しかし、ログファイルの設置と security の同じ warning に気を付けてください。
Apache 1.2とそれ以上:
Linux 1.x ユーザはコンフィギュレーションの
SVR4 ユーザはコンフィギュレーションの
参照:
Stopping and Restarting Apache
サーバは指定されたバイト数に対して、TCPバッファーサイズを設定します。高速高レイテンシな過去の標準OSのデフォルトを増やすのに便利です。(例:100ms か、または大陸横断高速線のようなもの)
ServerAdmin はサーバがクライアントへ返送するエラーメッセージに含まれるe-mail アドレスを設定します。このための専用のアドレスを設定する必要があるかもしれません。例えば
ServerAlias 命令は、ホストとname-based virtual hosts使用に対する名前の交換を設定します。
参照:
Apache Virtual Host documentation
ServerName 命令はサーバのホスト名を設定します;これは URLをリダイレクトるときにのみ使われます。もし指定されていなければ、サーバは自身の IP アドレスから推測しようとします。;しかしながら、これは確実ではないかもしれないし、好ましいホストネームを返さないかもしれません。例えば:
参照:
DNS Issues
ServerPath命令は、name-based virtual hostsで使われるホストのために、元からある URLのパス名を設定する。
参照:
Apache Virtual Host documentation
ServerRoot命令はシステムが存在するディレクトリを設定します。
一般的に、それはconf/ とlogs/ のサブディレクトリを含みます。他のコンフィグレーションファイルの相対パスは、このディレクトリとの相対パスになります。
ServerType命令はサーバがシステムによって実行される方法を設定します。Typeには
Standaloneは、はるかに効率的であるためServerTypeにおいて最も一般的な設定です。サーバが一度起動して、、引き続いて実行される全ての接続を実行します。もしbusyなサイトで
Apacheを起動させるつもりなら、 standaloneはおそらく唯一のオプションです。
セキュリティ:もしあなたがセキュリティにこだわるなら、 inetdモードで実行してください。セキュリティはどちらの場合( inetdとStandalone)でも保証は出来ません。しかし、ほとんどの人々がstandaloneを使用することでよいならば、inetdはおそらく使用されなくなるでしょう。
StartServers 命令は起動時に作られる子サーバプロセスの数を設定します。プロセス数はロードによって変動するので、通常この変数を調整する必要はありません。
Microsoft Windowsで作動させると、この命令は全ての子プロセス作動数を設定します。ApacheのWindowsバージョンはマルチスレッドされているので、一つの処理が全ての要求をハンドルします。メインの処理が死ぬまで、残りは貯えられます。
MinSpareServersとMaxSpareServersも参照してください。
この命令は使われるべきスレッドがどの位あるのかをサーバに教えます。これは、サーバが一度にハンドルできる接続の最大数です;たくさんヒットした場合には、確認して、サイトにとって十分に高い数値に設定してください。
StartServersとMaxRequestsPerChildを参照してください。
現在のところTimeOut命令は三つのことを待つ時間を定義します:
User 命令はサーバがリクエスト答えるユーザID を設定します。この命令を使うために、スタンドアローンサーバはルートとして起動時に作動します。Unix-useridは次の内の一つです:
注: もしサーバをルートでないユーザとして起動するなら、権限の小さいユーザへの変更に失敗し、代わりにオリジナルユーザとして実行し続けます。もしルートとしてサーバを起動するなら、ルートとして普通に上位の処理を行なうことができます。
Special note: Use of this directive in <VirtualHost> requires a
properly configured suEXEC wrapper.
When used inside a <VirtualHost> in this manner, only the user
that CGIs are run as is affected. Non-CGI requests are still processed
with the user specified in the main User directive.
セキュリティ: あなたが何をしていて、何が危険なのかを正確に知っている場合以外にはルートに対して User (or Group)の設定はしないで下さい。
<VirtualHost>と</VirtualHost>は特定のに対してのみ適用されるグループを囲むために使用されます。virtual host内で許可された命令を使用出来ます。サーバが特定の virtual host 上で document の要求を受け取ると、<VirtualHost>の中でグループ化された configration命令を使います。Addr は、
特別な名前である
一致しているポートを変更するための
セキュリティ: もしログファイルがストアされているディレクトリが、サーバを起動させたユーザ以外の誰かによって書き込みが可能になっていれば、なぜセキュリティが破られたのかについての詳細なドキュメントであるsecurity tipsを参照してください。
注: <VirtualHost>の使用はApacheがどんなアドレスを聞いているのかには影響しません。ApacheがBindAddressかListenのどちらかを使って正確なアドレスを聞くことを保証する必要があるかもしれません。
参照:
Apache Virtual Host documentation
もしアクセスをコントロールする命令が<Limit>命令の外部に存在するなら、全てのアクセス方法に対して適用されます。リストされている方法名は一つかそれ以上で、GET、POST、PUT、DELETE、CONNECT、OPTIONSです。もしGETが使われれば、HEAD要求を制限するでしょう。 もしすべての方法を制限することを望むなら、<Limit>命令を全く含んではいけません。
<Limit GET POST>
require valid-user
</Limit>
Listen命令
Syntax:
Listen [IP address:]port number
Context: server config
Status: core
Compatibility: ListenはApache1.1以上で使用可能
Listen 80
Listen 8000
二つの特定されたインターフェイスとポート番号でのサーバ認証接続をつくるために
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
See Also:
Setting which addresses and ports Apache uses
See Also:
Known Bugs
ListenBacklog directive
Syntax: ListenBacklog backlog
Default: ListenBacklog 511
Context: server config
Status: Core
Compatibility: ListenBacklog is only available in Apache
versions after 1.2.0.listen(2)システムコールに対するバックログパラメータを見てください。
<Location> 命令
Syntax: <Location URL>
... </Location>
Context: server config, virtual host
Status: core
Compatibility: LocationはApache 1.1以降で使用可能~文字を追加して使われます。例えば:
<Location ~ "/(extra|special)/data">
<Location /status>
SetHandler server-status
order deny,allow
deny from all
allow from .foo.com
</Location>
<LocationMatch>
Syntax: <LocationMatch regex>
... </LocationMatch>
Context: server config, virtual host
Status: core
Compatibility: Location is only available in Apache
1.3 and later.
<LocationMatch "/(extra|special)/data">
LockFile directive
Syntax: LockFile filename
Default: LockFile logs/accept.lock
Context: server config
Status: corelogsディレクトリがマウントされたNFSなら、lockfileは可能ならばローカルディスクにストアされるので変更の主な理由になります。メインサーバ処理のPIDは自動的にファイル名に付加されます。
MaxClients命令
Syntax: MaxClients number
Default: MaxClients 256
Context: server config
Status: core
MaxKeepAliveRequests directive
Syntax: MaxKeepAliveRequests number
Default: MaxKeepAliveRequests 100
Context: server config
Status: core
Compatibility: Only available in Apache
1.2 and later.
0"にセットされると、無制限のリクエストが許可されるでしょう。サーバの機能を最大にするには、この設定を推奨します。
MaxRequestsPerChild命令
Syntax: MaxRequestsPerChild number
Default: MaxRequestsPerChild 0
Context: server config
Status: core
MaxSpareServers命令
Syntax: MaxSpareServers number
Default: MaxSpareServers 10
Context: server config
Status: core
MinSpareServers directive
Syntax: MinSpareServers number
Default: MinSpareServers 5
Context: server config
Status: core
NameVirtualHost directive
Syntax: NameVirtualHost addr[:port]
Context: server config
Status: core
name-basedのバーチャルホスト名が決定するアドレスをNameVirtualHostが指定し、
もし複数のアドレスに複数のname-basedホストを持っていれば、それぞれのアドレスに命令を繰り返します。NameVirtualHost 111.22.33.44
See also:
Apache Virtual Host documentation
NameVirtualHost 111.22.33.44:8080Options命令
Syntax: Options [+|-]option [+|-]option ...
Context: server config, virtual host, directory, .htaccess
Override: Options
Status: core
通常、もし複数の Option があるディレクトリに対して適用された時、大抵特定の一つが実行されます。;option は2つ以上を実行することができません。しかし、もしOptions命令のallに + か - の記号がallの前に書かれている場合は、option はマージされます。+ が書かれたoptionは一般に、有効にoptions に加えられ、- が書かれたoption は効果のあるoption から除外されます。<Directory>セクションに対して一致するように使われるパス名は変えません。
上記は Includes だけが /web/docs/spec ディレクトリに設定される。Options命令が + と - の記号を使っていれば、:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options Includes
</Directory>
これによってFollowSymLinks と Includes が /web/docs/spec ディレクトリに設定されます。
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
PidFile命令
Syntax: PidFile filename
Default: PidFile logs/httpd.pid
Context: server config
Status: core
Port命令
Syntax: Port number
Default: Port 80
Context: server config
Status: core
なにも起こらなければ、Port設定はVirtualHostが反応するのがどんなポートかに影響します。VirtualHost命令自身はそのために使われます
:numberを特定するようなListenかあるいはBindAddress命令があると、Portはサーバが聞いてくるのがどんなアドレスかに影響しません。
SERVER_PORT環境変数(CGI and SSIに関する)を設定し、サーバがそれ自身に関係するURLを生じなければならないときに使われます(例えば、それ自身に対する外部リダイレクトを作るとき)。
require命令
Syntax: require entity-name entity entity...
Context: directory, .htaccess
Override: AuthConfig
Status: core
requireが<Limit>セクションに存在するとき指定された方法でのアクセスを制限します。<Limit>になければ全ての方法に対するアクセスを制限します。例:
Requireは正確に動作させるために(ユーザーやグループを定義するために)はAuthNameやAuthType、AuthUserFileやAuthGroupFileのような命令を伴わなければなりません。
AuthType Basic
AuthName somedomain
AuthUserFile /web/users
AuthGroupFile /web/groups
<Limit GET POST>
require group admin
</Limit>
ResourceConfig命令
Syntax: ResourceConfig filename
Default: ResourceConfig conf/srm.conf
Context: server config, virtual host
Status: core
一般的にこのファイルはサーバのコンフィグレーションの設定 と<Directory>セクション以外のほとんどの設定が含まれます。 sections;実際、server configで許可されたサーバの設定をいくつか含むことができます。ResourceConfig /dev/null
RLimitCPU 命令
Syntax: RLimitCPU # or 'max' [# or 'max']
Default:
Context: server config, virtual host
Status: core
Compatibility:RLimitCPUはApache 1.2以降で使用可能
RLimitMEM命令
Syntax: RLimitMEM # or 'max' [# or 'max']
Default:
Context: server config, virtual host
Status: core
Compatibility: RLimitMEM is only available in Apache 1.2 and later
RLimitNPROC命令
Syntax: RLimitNPROC # or 'max' [# or 'max']
Default:
Context: server config, virtual host
Status: core
Compatibility: RLimitNPROC is only available in Apache 1.2 and later
Satisfy命令
Syntax: Satisfy 'any' or 'all'
Default: Satisfy all
Context: directory, .htaccess
Status: core
Compatibility: SatisfyはApache 1.2以降で使用可能
ScoreBoardFile directive
Syntax: ScoreBoardFile filename
Default: ScoreBoardFile logs/apache_status
Context: server config
Status: coreEXTRA_CFLAGSに-DHAVE_SHMGETを追加することが可能かもしれません。これは、1.x インストレーションのいくつかでは作動するかもしれませんが、その全てでは作動しません。EXTRA_CFLAGSに-DHAVE_SHMGETを追加することを考えるべきでしょう。これは作動すると信じられていますが、1.2のテストについては間に合わせることができませんでした。
SendBufferSize directive
Syntax: SendBufferSize bytes
Context: server config
Status: core
ServerAdmin directive
Syntax: ServerAdmin email-address
Context: server config, virtual host
Status: core
いつも、ユーザがサーバに関して話していることを言わないように。ServerAdmin www-admin@foo.bar.com
ServerAlias命令
Syntax: ServerAlias host1 host2 ...
Context: virtual host
Status: core
Compatibility: ServerAliasはApache 1.2以降で使用可能
ServerName命令
Syntax: ServerName fully-qualified domain name
Context: server config, virtual host
Status: core
上記は実際にマシンの正当(メイン)の名前が monster.wibble.com であるなら使用されるでしょう。
ServerName www.wibble.com
ServerPath命令
Syntax: ServerPath pathname
Context: virtual host
Status: core
Compatibility: ServerPath is only available in Apache
1.1 and later.
ServerRoot命令
Syntax: ServerRoot directory-filename
Default: ServerRoot /usr/local/apache
Context: server config
Status: core
参照 the -d option to httpd.
ServerType命令
Syntax: ServerType type
Default: ServerType standalone
Context: server config
Status: core
Inetdは2つのオプションの中ではあまり使用されません。httpコネクションが受け取るたびに、サーバの新たなコピーがゼロからスタートします。そのコネクションが完了した後、このプログラムは終了します。コネクション毎の高い代償がありますが、セキュリティー上の理由から管理者によってはオプション(Inetd)の方を好みます。
/etc/inetd.confに加えられます。
StartServers命令
Syntax: StartServers number
Default: StartServers 5
Context: server config
Status: core
ThreadsPerChild
Syntax: ThreadsPerChild number
Default: ThreadsPerChild 50
Context: server config
Status: core (Windows)
Compatbility: Available only with Apache 1.3 and later
with Windows
TimeOut命令
Syntax: TimeOut number
Default: TimeOut 300
Context: server config
Status: core
ダウンロードのいくつかの時点で、これらを別々にコンフィギュアすることを可能にすることを計画しています。1.2 以前ではタイマーのデフォルトは 1200 が使われていましたが、300 になってもまだ、たいていの場合には必要以上に大きいです。デフォルトで低く設定されないのは、パケットが送信されたときにタイマーがリセットされないコードでは、まだ半端になるかもしれないからです。
User命令
Syntax: User unix-userid
Default: User #-1
Context: server config, virtual host
Status: core
ユーザには読むことのできないようにしてあるファイルにアクセスする権限がありません。同様に、httpd の要求に対応していないコードを実行することはできません。特に作動しているサーバの新しいユーザとグループに設定することを推奨します。管理者によっては ユーザを必要としませんが、これが常に可能で望ましいわけではありません。
<VirtualHost> 命令
Syntax: <VirtualHost addr[:port] ...> ...
</VirtualHost>
Context: server config
Status: Core.
Compatibility: Non-IP address-based Virtual Hosting only
available in Apache 1.1 and later.
Compatibility: Multiple address support only available in
Apache 1.2 and later.
一般に、それぞれの VirtualHost はサーバとは異なった IP アドレスに対応していなければならず、サーバ機は複数のアドレスの IP パケットを受け取るためにコンフィギュアされていなければなりません。もしそのマシーンが複数のネットワークのインターフェースを持っていなければ、サーバ機は ifconfig alias コマンド(OSがそれをサポートしている場合)か、または、VIFのような kernel patch (SunOS(TM) 4.1x の場合)で実現することが出来ます。
<VirtualHost 10.1.2.3>
ServerAdmin webmaster@host.foo.com
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
</VirtualHost>
_default_は、このバーチャルホストが、明らかに他のバーチャルホストにリストされていないIPアドレスに一致する場合に指定されます。なにかの _default_ バーチャルホストがない"main"のサーバコンフィグは、VirtualHostセクションの外側で全てのその定義から構成され、一致しないときに使われます。:portを指定できます。もし指定されなければ、メインサーバの一番最近のPortと同じポートに対してデフォルトになります。そのアドレスで全てのポートに一致する:*を指定するかもしれません(これは、_default_で使われたときに推奨されます)。
参照:
Warnings about DNS and Apache
参照:
Setting which addresses and ports Apache uses
参照: How Directory,
Location and Files sections work for an explanation of how these
different sections are combined when a request is received
Apache HTTP Server Version 1.3
The English original manual is here.