|
AccessConfig conf/access.conf
サーバはResourceConfigファイルを実行してからこの命令を実行します。
FilenameはServerRootの相対パスとなります。
この特徴は以下の様に設定すると無効出来ることです。:
AccessConfig /dev/null
これまではこのファイルは<Directory>セクションにだけで設定されています。;実際にこのファイルは現在server c
onfigで許可されたいくつかのサーバの設定含むことが出来ます。
AccessFileName .htaccessサーバがクライアントにドキュメントを表示させるとき、もしアクセスコントロールファイルがそのディレクトリに対してアクセスすることを可能にしているならば、サーバはドキュメントに指定されたディレクトリパスにこの名前でアクセスコントロールファイル(.htaccess)を探します。 例:
AccessFileName .acl
サーバは/usr/local/web/index.html,を表示させる前に、もし以下の様な記述がなければ、/.acl, /usr/.acl, /usr/local/.acl and /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 のような 命令が伴わなければなりません。
サーバは既に組み込まれた実行可能なモジュールを実行します。この命令はそのリストをクリアします。AddModule命令によってそのリストが実行されていることが前提です。
BindAddress *UNIX の http サーバは、接続のためにサーバマシンの全ての IP アドレスか、またはサーバマシンの唯一のIPアドレスのどちらかを読み込むことができる。saddr は以下の通りである。
値が * のとき、サーバはあらゆる IP アドレスにコネクションするでしょう。その他のときは特定の IP アドレスを読み込みます。このオプションは<VirtualHost>のセクションを使う代わりに、virtual hostsをサポートするための代わりの方法として使用されます。
参考: Setting which addresses and ports Apache uses
DefaultType text/htmlMIMEタイプで定義されていないタイプのドキュメントを提供することをサーバが求められるときがあります。
サーバはそのドキュメントのcontent-typeをクライアントに知らせなければなりません。例えば :
DefaultType image/gif
これは .gif の拡張子がないgifイメージのファイルを含んだディレクトリに適用されます。<Directory>と</Directory>はそのディレクトリで指定されたディレクトリとサブディレクトリに対してのみ適用される命令のグループ化ために使用されます。そのディレクトリ内では許可された命令のみが使用可能となります。Directoryは相対パスか、またはワイルドカードのどちらかです。ワイルドカードの中で「?」はある一文字に一致し、「*」はある連続した文字列に一致します。例えば:
<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 へアクセスするための設定は:
そのdirectoryの項目は一般的にaccess.conf ファイルで使用されるが、それらはいくつかの configurationファイルの中でも使用することが出来る。<Directory>命令は、ネストを行なうことが出来ず、<Limit>の項目の中で使用することも出来ません。
DocumentRoot
/usr/local/etc/httpd/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 /cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 http://www2.foo.bar/subscription_info.html
ErrorDocument 403 "Sorry can't allow you access today
参考:documentation of customizable responses.ErrorLog logs/error_logエラーログ命令は、サーバに発生したエラーを記録するファイル名を設定する。 もしファイル名がスラッシュ(/)で始まっていなければ、ServerRoot に対して相対的位置にあると仮定される。 例:
ErrorLog /dev/null
これは事実上、エラーの記録を中止する。
<Files>命令は、ファイルネームによるアクセスコントロールを設定します。<Directory>命令や、<Location>命令に匹敵します。</Files>命令と対応させます。与えられたファイルネームに対して適用される命令は内部でリストになっている。 </Files>セクションは<Directory>セクションと .htaccessファイルが読み込まれた後、<Location>セクションの前にコンフィグレーションファイルに存在する命令を処理します。
filenameはあるファイルネームまたは、ワイルドカード文字を含みます。「?」はある一文字に一致し、「*」はある連続した文字列に一致します。通常の表記よりも拡張された正規表現もまた「~」文字を付加して使用する事が出来ます。例えば:
<Files ~ "\.(gif|jpe?g|png)$">最も一般的なインターネットのグラフィックのフォーマットに一致するでしょう。 .htaccessファイルの内部で使われる
<Directory>セクションは、<Location>セクションと<Files>セクションとは違うことに注意してください。これはユーザーにファイルごとのレベルで彼ら自身のファイルへのアクセスをコントロールすることを許可します。.htaccess ファイル内で使われる時に、もしfilenameがスラッシュ(/)で始まっていなければ、適用されるディレクトリは自動的にルートへ置かれます。
Group #-1Group命令は、サーバがコマンドに答えるグループを設定する。この命令を使用するためにはスタンドアローンサーバがルートとして初期に作動していなければならない。 Unix-groupは以下の内の一つである:ys
作動しているサーバに特別に新しいグループをセットアップすることを推奨します。管 理者はユーザーを使いませんが、これが常に可能で、望ましいわけではありません。 注意:もしルートでないユーザーとしてサーバを立ち上げたのなら、指定したものに変更するのを失敗するか、代わりにオリジナルユーザーのグループとして実行し続けることになります。
特記:<VirtualHost>にあるこの命令の使用は、適切に configure されたSUEXEC wrapperを必要とする。
SECURITY:セキュリティーについては User を参照して下さい。
IdentityCheck offこの命令はそれぞれのコネクションに対してリモートユーザネームのRFC931-compliantログを可能にします。そのクライアントマシーンはinetdで起動するか何か類似したもので起動します。この情報はaccess logに記録されます。Booleanはonかoffのどちらかです。
その情報は基本的なトラッキングの使用以外には、信頼するべきではない。
<IfModule test>...</IfModule>セクションは条件を表す命令を示すために使用されます。IfModuleセクション内部の命令は、もしtestが本当なら、処理だけが行われる。もしテストが間違っていれば、スタートとエンドマーカーの間にある全ては無視される。
<IfModule>セクションの命令のtestは二つの形式のうちの一つが使用可能です。
前者の場合、もしmodule nameと名付けられたモジュールがApacheでコンパイルされると、スタートとエンドマークの間の命令は処理だけが行われる。もしmodule nameがコンパイルされないと、二番目の場合、テストを逆にして、命令の処理だけを行なう。
module nameのargumentはモジュールのファイルネームによって与えられたモジュールネームであり、その時にコンパイルされていた。例えば、mod_rewrite.c.
<IfModule>セクションは nest-ableで、単に multiple-module テストの手段として使われる。
KeepAlive 5この命令はKeep-Alive のサポートを可能にする。リクエストごとに許可する、あなたがApacheに要求するリクエストの最大数をmax-requestsに設定してください。限界値はクライアントがあなたのサーバリソースを一人占めしようとするのを防ぎます。サポートを無効にするにはこれを0に設定してください。
KeepAliveTimeout 15
そのコネクションを終了する前に、Apacheが次のリクエストを待つ秒数です。一度コマンドを受け取ると、Timeout命令が適用されることにより、タイムアウトの値が指定されます
Listen命令は、一つ以上の IP アドレスやポートを認識するように Apache に指示します。デフォルトでは全てのIPインターフェイスのリクエストに応答しますが、Port命令によって与えられたポートのみに応答します。
参考: Setting which addresses and ports Apache uses
<Limit>と</Limit>はアクセスをコントロールする命令をグループ化するために使用されます。そしてそれはmethodが有効なHTTPの方法である特定のアクセス方法にのみ適用されます。 もう一つ他に<Limit>や、 <Directory>を除いたいくつかの命令を使用することが可能です。ほとんどは
<Location>命令は、URL によるアクセス制御を供給する。それは<Directory>命令と同等で、</Location>に対応しています。与えられた URL に適用される命令は、内部で読み込まれます。<Location>セクションは<Directory>セクションと.htaccessファイルが読まれた後にコンフィグレーションファイルに存在するその他で処理されます。 HTTP 機能の方法の結果として、URL prefixは proxy からのリクエストを保存するし、/path/形式になるはずですが、http://servername は含みません。ディレクトリ(個人ファイルやファイル数)を保護する必要はなく、ワイルドカードを含むことができる。ワイルドカードは"?"が一文字、"*"が一 続きの数文字を表しています。
Apache 1.2以降:文字を追加することで、通常よりも拡張された表記を行なうことが出来る。例えば:
もしアクセスをコントロールする命令が<Limit>命令の外部に存在するなら、全てのアクセ方法に対して適用されます。
<Limit GET POST>
require valid-user
</Limit>
<Location>
Syntax: <Location URL>
... </Location>
Context: server config, virtual host
Status: core
Compatibility: LocationはApache 1.1以降で使用可能
<Location ~ "/(extra|special)/data">
上記は "/extra/data" か "/special/data" を含んだ URL と一致する。
Location 機能は特に SetHandler命令とセットで使うと有効である。例えば、statusの命令を可能にし、foo.com のブラウザからの命令のみを許可するためには以下のように記述してください:
<Location /status>
SetHandler server-status
order deny,allow
deny from all
allow from .foo.com
</Location>
MaxClients 256MaxClients命令は同時にリクエスト数の限度数を設定します;作成される子サーバプロセスの数以下です。
MaxRequestsPerChild 0MaxRequestsPerChild命令は個々の子サーバプロセスが取り扱うリクエストの範囲を設定する。MaxRequestPerChild が設定されると、その子プロセスは停止します。もしMaxRequestsPerChild が0だと、そのプロセスは停止しません。
MaxRequestsPerChild を0以外に設定すると、2つの有益な効果があります。
MaxSpareServers 10MaxSpareServers命令はidleの子サーバプロセスの最大数を設定します。idleプロセスはリクエストを処理しないものの一つです。もし MaxSpareServers の idleよりも多い場合には、親プロセスは、過剰な処理を停止するでょう。
このパラメータの設定は非常に混雑したサイトにのみ実行すべきです。このパラメータの数を大きく設定することは大抵の場合良いアイデアとはいえません。
MinSpareServersとStartServersも参照してください。
MinSpareServers 5MinSpareServers命令はidle子サーバプロセスの最少値を設定します。 idle プロセスはリクエストを処理しないものの一つです。もし MinSpareServers の idle よりも少ない場合には、上位の処理が、一秒ごとの最大速度で新しい下位の処理を実行します。
このパラメータの設定は非常に混雑したサイトにのみ実行すべきです。このパラメータの数を大きく設定することは大抵の場合良いアイデアとはいえません。
MaxSpareServersとStartServersも参照してください。
Options命令はサーバ制御を特定のディレクトリ内でのみ有効にする命令です。
optionがNoneに設定されている場合は特別な制御は使用不可であるかあるいは、次のような場合がある。
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options Includes
</Directory>
上記は Includes だけが /web/docs/spec ディレクトリに設定される。Options命令が + と - の記号を使っていれば、:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
これによってFollowSymLinks と Includes が /web/docs/spec ディレクトリに設定される。
PidFile logs/httpd.pidPidFile 命令はデーモンのプロセスidをサーバが記録するファイルを設定します。もしファイルネームがスラッシュ(/)で始まっていなければ、ServerRootが親ディレクトリであると仮定されます。PidFileはstandaloneモードでのみ使用されます。
サーバにシグナルを送るためにしばしば使われ、サーバが閉じていると、ErrorLogとTransferLogを再び開き、configuration ファイルを再び読み込む。これはPidFileにリストされた プロセスidにSIGHUP(kill -1) シグナルを送ることで実行される。
Port 80Port命令はサーバが起動するときのネットワークポート番号を設定します。 numberは0から65535までです。いくつかのポート番号は(特に1024以下)特別なプロトコルのために使用されます。いくつかのポート番号が定義されているリストである/etc/servicesを参照してください。httpdプロトコルのための標準ポート番号は80です。
ポート番号80はUnixの特定のポートの1つです。1024以下のポート番号はすべてシステムが使用するために確保されています。例えば、通常(non-root)のユーザはそれらを使用する事が出来ません。; 代わりに彼らはそれ以上のポート番号を使用することが出来ます。
ポート番号80を使用するためにあなたはルートでサーバを起動しなければならない。ポートにバインドした後とリスエストを受ける前に、ApacheはUser命令令によって設定されたより低い権限を持ったユーザに変更します。
もしあなたがポート番号80を使用することが出来ないならば、使用されていない他のポート番号を選んでください。 Non-rootユーザは1023より大きいポート番号を選択しなければなりません。例えば8000のような。
SECURITY: もしあなたがrootでサーバを起動するならば、Userにrootを設定することは信頼性がありません。もしあなたがrootでサーバを起動するならコネクションしている間あなたのサイトは主要なセキュリティーへの攻撃に対してオープンであるかもしれない。
この命令は、認証されたユーザがあるディレクトリにアクセスできるかどうかを選択します。許可されたsyntaxesは:
指定されたユーザだけがディレクトリにアクセスできます。
指定されたグループのユーザだけがディレクトリにアクセスできます
全ての正当なユーザがディレクトリにアクセスできます。
もしrequireが<Limit>セクションに存在するとき指定された方法でのアクセスを制限します。<Limit>になければ全ての方法に対するアクセスを制限します。例:
AuthType Basic
AuthName somedomain
AuthUserFile /web/users
AuthGroupFile /web/groups
Limit <GET POST>
require group admin
</Limit>
Requireは正確に動作させるために(ユーザーやグループを定義するためには)はAuthNameやAuthType、AuthUserFileやAuthGroupFileのような命令を伴わなければならない。ResourceConfig conf/srm.confサーバは httpd.confファイルを実行した後、このファイルを実行します。FilenameはServerRootと相対パスをとります。この特徴は以下のように設定すると無効に出来ることです。:
ResourceConfig /dev/null
一般的にこのファイルはサーバのコンフィグレーションの設定 と<Directory>セクション以外のほとんどの設定が含まれます。 sections;実際、server configで許可されたサーバの設定をいくつか含むことができる
AccessConfig も参照して下さい。
Unset uses operating system defaults1か2のパラメータを取ります。最初のパラメータは全ての処理に対するソフトリソース制限を設定し、2番目のパラメータはリソース制限の最大値を設定する。パラメータは数字か、サーバに示されているmaxのどちらかです。その制限はオペレーティングシステムのコンフィグレーションによって許可された最大値が設定されます。'最大リソース制限を設定するのはーバがルートとして作動している時か、起動時である。
CPUリソース制限はプロセス毎に秒単位で表示されます。
RLimitMEMとRLimitNPROCも参照してください
Unset uses operating system defaults1か2のパラメータを取る。最初のパラメータは全てのプロセスのソフトリソース制限を設定し、2番目のパラメータはリソース制限の最大値を設定する。パラメータは数字か、サーバに示されているmaxのどちらかです。その制限はオペレーティングシステムのコンフィグレーションによって許可された最大値が設定されます。最大リソース制限を行なうのはサーバがルートとして作動している時か、起動時である。
メモリーリソースはプロセス毎にバイト単位で表示される。
RLimitCPUとRLimitNPROCも参照してください。
Unset uses operating system defaults1か2のパラメータを取る。最初のパラメータは全てのプロセスに対するソフトリソース制限を設定し、2番目のパラメータはリソース制限の最大値を設定する。パラメータは数字か、サーバに示されているmaxのどちらかです。その制限はオペレーティングシステムのコンフィグレーションによって許可された最大値が設定されます。最大リソース制限を行なうのはサーバがルートとして作動している時か、起動時である。
プロセス制限はユーザごとにプロセス数を制限する。
Note: もしCGIプロセスがwebサーバのユーザIDではないユーザIDで動作しているならば、この命令はサーバ自身が作成出来るプロセス数を制限します。この痕跡はerror_log の中のcannot forkメッセージによって確認出来ます。
サーバは明示されたバイト数に対して、TCPバッファーサイズを設定する。非常に有益な過去の標準OSは high speed high latency を履行しません。(例:100msかまたは大陸横断高速線のようなもの)
The ServerAdmin sets the e-mail address that the server includes in any error messages it returns to the client.
ServerAdmin はサーバがクライアントへ返送するエラーメッセージに含まれるe-mail アドレスを設定する。このための専用のアドレスを設定する必要があるかもしれない。例えば
ServerAdmin www-admin@foo.bar.com
ユーザとしてサーバに関して話していることについていつも話してはいけない。ServerAlias 命令はホストとHost-header based virtual hosts使用に対する名前の交換を設定する。
ServerName 命令はサーバのホスト名を設定する;これは URLをすリダイレクトるときにのみ使われる。もし明確にされていなければ、サーバは自身の IP アドレスから推測しようとする。;しかしながら、これは確実ではないかもしれないし、好ましいホストネームを返さないかもしれない。例えば:
ServerName www.wibble.com
上記は実際にマシンの正当(メイン)の名前が monster.wibble.com であるなら使用されるでしょう。ServerPath命令はホストとHost-header based virtual hostsでの使用に対して受け継いだURLのパス名を設定する。
ServerRoot /usr/local/etc/httpdServerRootの設定はシステムが存在するディレクトリを設定します。 一般的に、それはconf/ とlogs/ のサブディレクトリを含みます。他のコンフィグレーションファイルの相対パスは、このディレクトリとの相対パスになります。
ServerType standaloneServerType命令はサーバがシステムによって実行される方法を設定します。Typeには
Standaloneは、はるかに効率的であるためServerTypeにおいて最も一般的な設定です。サーバ一度スタートされ、引き続いて実行される全てのコネクションをサービスします。もしbusyなサイトで Apacheを起動させるつもりなら、 standaloneはおそらく唯一のオプションです。
SECURITY:もしあなたがセキュリティーにこだわるなら、 inetdモードで実行しなさい。セキュリティーはどちらの場合( inetdとStandalone)でも保証は出来ません。しかし、ほとんどの人々がstandaloneを使用することでHappyならばinetdはおそらく使用されなくなるでしょう。
StartServers 5StartServers 命令は起動時に作られる子サーバプロセスの数を設定する。プロセス数はロードによって変動するので、通常この変数を調整する必要はない。
MinSpareServersとMaxSpareServersも参照してください。
TimeOut 1200TimeOut命令はサーバが秒単位にリクエストを受けるのを待つあるいは完了するのを待つ最大の時間を設定します。それでもしリクエストがクライアントに対してリクエストを返すまたはレスポンスを受ける時間がTimeOutの秒数以上になるとサーバはコネクションをきります。従ってこのTimeOutは転送出来る範囲を制限します。大きいファイルと遅いネットワークは転送時間を大きく出来ます。
User #-1User 命令はサーバがリクエスト答えるユーザID を設定します。この命令を使うために、スタンドアローンサーバはルートとして起動時に作動する。Unix-useridは次の内に一つである:
Notes: もしサーバをルートでないユーザとして起動するなら、少ない特権のあるユーザ への変更に失敗し、代わりにオリジナルユーザとして実行し続けるだろう。もしルート としてサーバを起動するなら、ルートとして普通に上位の処理を行なうことができる。
Special note: <VirtualHost>でのこの命令の使用は、適当に configure された SUEXEC wrapperを必要とする。
SECURITY: あなたが何をしていて、何が危険なのかを正確に知っている場合以外にはルートに対して User (or Group)の設定はしないで下さい。
<VirtualHost>と</VirtualHost>は特定のに対してのみ適用されるグループを囲むために使用されます。virtual host内で許可された命令を使用出来ます。サーバが特定の virtual host 上で document の要求を受け取ると、<VirtualHost>の中でグループ化された configration命令を使います。Addr は、 <VirtualHost> and </VirtualHost> are used to enclose a gro
例:
<VirtualHost host.foo.com>
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>
一般に、それぞれの VirtualHost はサーバとは異なった IP アドレスに対応していなければならず、サーバ機は複数のアドレスの IP パケットを受け取るためにconfigureされていなければならない。もしそのマシーンが複数のネットワークのインターフェースを持っていなければ、サーバ機は ifconfig alias コマンド(OSがそれをサポートしている場合)かまたは、VIFのような kernel patch (SunOS(TM) 4.1x の場合)で達成することが出来ます。
参考:
Information on Virtual Hosts.
(multihome)
参考:
Non-IP address-based Virtual Hosts
このページの情報に関わる、ご質問、お問い合わせは、 japache@infoscience.co.jpまで。