From: Yoshiki Hayashi
IPv4 と IPv6 のコネクションを最小限のソケットで扱いたいのであれば、 +
一方で、Linux や Tru64 といったプラットホームで IPv4 と IPv6
+ の両方を扱うには、マップトアドレスを使用する以外の方法はありません。
+ IPv4 と IPv6 のコネクションを最小限のソケットで扱いたいのであれば、
IPv4 マップの IPv6 アドレスを使用する必要があり、
- --enable-v4-mapped
configure オプションを指定して、単純に
-
--enable-v4-mapped
configure オプションを指定します。
- --enable-v4-mapped
では、Apache
- の生成するデフォルトの設定ファイル中の
- --enable-v4-mapped
は、
+
--enable-v4-mapped
は、
FreeBSD, NetBSD, OpenBSD 以外の全てのプラットホームでのデフォルトです。
ですから、おそらくお手元の Apache はこの設定でビルドされているでしょう。
IPv4 と IPv6 のコネクションを個別のソケットで扱うようにしたい場合 +
条件を満たすプラットホームで、Apache が
+ IPv4 と IPv6 のコネクションを個別のソケットで扱うようにしたい場合
(つまり IPv4 マップのアドレスを無効にしたい場合)
は、--disable-v4-mapped
configure
オプションを指定して、次のように個別指定の
--disable-v4-mapped
では、Apache
- の生成するデフォルトの設定ファイル中の
- --disable-v4-mapped
は、
FreeBSD, NetBSD, OpenBSD プラットホームでのデフォルトです。
コンテントネゴシエーションは
Apache は HTTP/1.1 規格で定義されている 'server
driven' コンテントネゴシエーションをサポートしています。
- Accept, Accept-Language, Accept-Charset, Accept-Encoding
+ Accept
, Accept-Language
,
+ Accept-Charset
, Accept-Encoding
リクエストヘッダを完全にサポートしています。Apache は
'transparent' コンテントネゴシエーションもサポートしていますが、
これは RFC 2295 と RFC 2296 で定義されている試験的な
@@ -103,7 +103,7 @@
タイプマップは type-map
ハンドラ
(もしくは、古い Apache
- の設定と下位互換である mime タイプ
+ の設定と下位互換である MIME タイプ
application/x-type-map
)
に関連付けられたドキュメントです。
この機能を使うためには、あるファイルの拡張子を
@@ -111,7 +111,9 @@
として定義するようなハンドラを、
設定ファイル中に置く必要があることに注意してください。
これは
をサーバ設定ファイル中に書くことが一番良い方法です。
タイプマップファイルは記述するリソースと同じ名前を持っていて、 @@ -272,7 +274,7 @@
Accept
ヘッダフィールドで優先傾向を指定します。
アイテムそれぞれは、関連した品質数値を持つことができます。
variant の説明も品質数値を持つことができます
@@ -282,7 +284,7 @@
Accept-Language
ヘッダフィールドで優先傾向を指定します。
要素それぞれに品質数値を持たせることができます。
variants は 0 か 1 つかそれ以上の言語と
@@ -292,7 +294,7 @@
Accept-Encoding
ヘッダフィールドで優先傾向を指定します。
要素それぞれに品質数値を持たせることができます。Accept-Charset
ヘッダフィールドで優先傾向を指定します。
要素それぞれに品質数値を持たせることができます。
variant はメディアタイプのパラメータとして文字セットを
@@ -333,13 +335,13 @@
複数 variant が残っていれば、次のテストに進みます。
Accept
ヘッダの品質数値との積を計算して、最高値の variant
を選びます。Accept-Language
ヘッダの言語順か、
(もしあれば)
Accept-Charset
ヘッダ行で与えられている最高の文字セット
メディアパラメータを持つ variant を選びます。
明示的に除外されていない限り、ISO-8859-1
が許容されるようになっています。
@@ -382,7 +384,7 @@
Vary
が設定されます
(リソースのキャッシュをする時に、
ブラウザやキャッシュはこの情報を使うことができます)。
以上で終わり。Vary
ヘッダも設定されます。
上記の Apaceh ネゴシエーションアルゴリズムの厳格な解釈で +
上記の Apache ネゴシエーションアルゴリズムの厳格な解釈で
得られるであろう値から、Apache は品質数値を時々変えます。
これは、このアルゴリズムで完全ではない、あるいは正確でない情報を送る
ブラウザ向けによりよい結果を得るために行われます。
かなりポピュラーなブラウザで、もしないと間違った variant
- を選択する結果になってしまうような Accept
+ を選択する結果になってしまうような Accept
ヘッダ情報を送るものもあります。
ブラウザが完全で正しい情報を送っていれば、
この数値変化は適用されません。
Accept: リクエストヘッダはメディアタイプの優先傾向を指定します。 +
Accept:
リクエストヘッダはメディアタイプの優先傾向を指定します。
これはまた、"image/*" や "*/*"
といった「ワイルドカード」メディアタイプを含むことができます。
ここで * は任意の文字列にマッチします。
@@ -444,12 +446,12 @@
明示的にリストされているタイプに合致する variant がない場合にのみ、
他のタイプが返されます。
もし Accept: ヘッダが q 値を全く含んでいなければ、 +
もし Accept:
ヘッダが q 値を全く含んでいなければ、
望みの挙動をするために、
Apache は "*/*" があれば 0.01 の q 値を設定します。
また、"type/*" の形のワイルドカードには 0.02 の q 値を設定します
(ですからこれらは "*/*" のマッチよりも優先されます)。
- もし Accept: ヘッダ中のメディアタイプのどれかが q
+ もし Accept:
ヘッダ中のメディアタイプのどれかが q
値を含んでいれば、これらの特殊な値は適応されず、
正しい情報を送るブラウザからのリクエストは期待通りに
動作するようになります。
サーバのページをクライアントがリクエストしたけれども、
- ブラウザの送ってきた Accept-Language に合致するページが一つも
+ ブラウザの送ってきた Accept-Language
に合致するページが一つも
見つからなかった場合に、サーバは "No Acceptable Variant"
か "Multiple Choices" レスポンスをクライアントに返します。
これらのエラーメッセージを返さないように、
- このような場合には Apache が Accept-Language を無視して、
+ このような場合には Apache が Accept-Language
を無視して、
クライアントのリクエストに明示的には合致しないドキュメントを
提供するように設定できます。
{encoding ..}
要素を variant リスト中に使っています。
リスト中のエンコードされた variant を認識し、
-Accept-Encoding リクエストヘッダに従って許容される
+Accept-Encoding
リクエストヘッダに従って許容される
エンコードをもった variant は、どれでも候補 variant
として使用するように、
RVSA/1.0 アルゴリズム (RFC 2296) の実装が拡張されました。
@@ -670,6 +672,15 @@ RVSA/1.0 の実装では、最適な variant が見つかるまで、
このディレクティブは、サーバ設定ファイルやバーチャルホストに書くことができ、
引数をとりません。
HTTP/1.1 クライアントからのリクエストには効力を持ちません。
HTTP/1.1 クライアントに対しては、レスポンスのネゴシエーション次元
+ を示すために Vary
HTTP レスポンスヘッダを送ります。
+ キャッシュは、これを使って後続のリクエストに対してローカルコピーで応答できるか
+ どうかを決定できます。
+ ネゴシエーション次元とは関係なしにローカルコピーの使用を優先するようにするには、
+ force-no-vary
環境変数を
+ 設定します。
libtool
と autoconf
を使うようになっています。
+ マイナーバージョンからその次のバージョンにアップグレードする + (2.0.50 から 2.0.51 へ等) 場合は、まず + アップグレードをご覧下さい。
+$ lynx
- http://www.apache.org/dist/httpd/httpd-2_1_NN.tar.gz
+ $ lynx http://httpd.apache.org/download.cgi
-Idir
") 。TARGET=...
[デフォルト値: apache
]TARGET=...
[デフォルト値: httpd
]アップグレードでまず行なうべきことは、リリースアナウンスと
+ ソースディストリビューションに入っている CHANGES
を読んで、
+ 自身のサイトに対して影響を及ぼす変更点を探すことです。
+ メジャーリリース間の変更をする場合 (例えば 1.3 から 2.0 へ、2.0 から 2.2 へ)
+ は、コンパイル時や実行時の設定に大きな差異があるでしょうから、
+ 手動の調整が必要になるでしょう。モジュールも全て、API
+ の変更に合わせるためにアップグレードが必要になるでしょう。
マイナーバージョンから次のバージョンにアップグレードする場合
+ (例えば 2.0.55 から 2.0.57 へ) は、もっと簡単です。
+ make install
を実行しても今あるドキュメント、
+ ログファイル、設定ファイルは上書きされません。
+ さらに、マイナーバージョン間では configure
オプション、
+ 実行時の設定、モジュール API に不整合が起こらないように、
+ 開発者は最大限の努力をしています。
+ 大抵の場合、同一の configure
コマンドライン、
+ 同一の設定ファイル、モジュール全てが正常に動作するはずです。
+ (2.0.41 以降ではそのようになっています。それ以前のバージョンには
+ 不整合が存在します。)
前回のインストール時のソースツリーが残されているのであれば、
+ アップグレードはさらに簡単です。古いソースツリーのルートに存在する
+ config.nice
ファイルには、前回ソースツリーを設定した時の
+ configure
コマンドラインが入っています。
+ 次のバージョンにアップグレードする場合は、config.nice
+ ファイルを新しいバージョンのソースツリーにコピーし、
+ それを編集し必要な変更を行なって、次のように実行します。
--prefix
と異なるポート (これより柔軟なマッチングが必要な場合は、これらのコンテナの正規表現 +
これより柔軟なマッチングが必要な場合は、これらのコンテナに正規表現
(regex) 版である
ですからできる限りファイルシステムコンテナを使用してください。
しかしながら一つだけ例外があります。
<Location />
セクションはどんな URL
-にも関わらず適用されるので、そこにアクセスを制限するディレクティブを
-居れることは完全に安全です。
cnn.com
ウェブサイトをアクセスするためには使えないようにします。
cnn.com
+ウェブサイトにアクセスするために用いられるプロクシサーバを
+制限します。
.htaccess
を同時に (.htaccess
が許可されていれば、それが
後のセクションのディレクティブが前のセクションのものを上書きします。
@@ -435,7 +440,7 @@ A+ これは、wrapper を実行しているユーザが + 本当にシステムの利用者であることを保証するためです。 +
+- これは、wrapper を実行しているユーザが - 本当にシステムの利用者であることを保証するためです。 -
-
- 対象のプログラムが '/' から始まる、または
+ 対象の CGI, SSI プログラムが '/' から始まる、または
'..' による参照を行なっていますか? これらは許可されません。
- 対象のプログラムは Apache の web 空間内になければなりません。
+ 対象のプログラムは suEXEC のドキュメントルート
+ (下記の --with-suexec-docroot=DIR
を参照)
+ 内に存在しなければなりません。
- 今のところ、suEXEC は 'root' による CGI/SSI
+ 今のところ、suEXEC は root
による CGI/SSI
プログラムの実行を許可していません。
ディレクトリが存在しないなら、そのファイルも存在しないかもしれません。 + ディレクトリに移動できないのであれば、おそらく存在もしないでしょう。
リクエストがサーバ内のものであれば、 - 要求されたディレクトリがサーバのドキュメントルート配下にありますか? - リクエストが UserDir のものであれば、 - 要求されたディレクトリがユーザのドキュメントルート配下にありますか? + 要求されたディレクトリが suEXEC のドキュメントルート配下にありますか? + リクエストが UserDir のものであれば、要求されたディレクトリが suEXEC + のユーザのドキュメントルート配下にありますか? + (suEXEC 設定オプション 参照)
@@ -247,7 +251,7 @@存在しなければ実行できません。 @@ -255,17 +259,17 @@
- 所有者以外にはプログラムを変更する権限は与えられません。 + 所有者以外には CGI/SSI プログラムを変更する権限は与えられません。
@@ -297,7 +301,7 @@
@@ -334,13 +338,13 @@
--enable-suexec
+ オプションにあわせて少なくとも一つは --with-suexec-xxxxx
オプションが指定されなければなりません。--with-suexec-bin=PATH
suexec
バイナリのパスはサーバに
ハードコードされている必要があります。デフォルトのパスを
変えたいときはこのオプションを使ってください。例えば、
--with-suexec-bin=/usr/sbin/suexec
のように。--datedir
に "/htdocs"
というサフィックスをつけたものです。
"--datadir=/home/apache
" として設定すると、
suEXEC wrapper にとって "/home/apache/htdocs"
@@ -396,7 +400,7 @@
--logfiledir
) に置かれます。
--with-suexec-safepath=PATH
suEXEC 設定の確認
suEXEC wrapper をコンパイルしてインストールする前に、設定内容を
- --layout オプションで確認できます。
+ --layout
オプションで確認できます。
出力例:
suEXEC wrapper
のコンパイルとインストール
- --enable-suexec オプションで suEXEC 機能を有効にすると、
- "make" コマンドを実行した時に suEXEC のバイナリ (Apache 自体も)
+ --enable-suexec
オプションで suEXEC 機能を有効にすると、
+ "make" コマンドを実行した時に suexec
のバイナリ (Apache 自体も)
が自動的に作成されます。
すべての構成要素が作成されると、それらのインストールには
- "make install" コマンドが実行できます。バイナリイメージの "suexec"
- は --sbindir オプションで指定されたディレクトリにインストールされます。
+ make install
コマンドが実行できます。バイナリイメージの suexec
+ は --sbindir
オプションで指定されたディレクトリにインストールされます。
デフォルトの場所は "/usr/local/apache/sbin/suexec" です。
インストール時には root
権限が必要なので注意してください。wrapper がユーザ ID
@@ -439,16 +443,47 @@
でのセットユーザ ID
ビットをそのファイルのモードに設定しなければなりません。
安全なパーミッションを設定する
+ suEXEC ラッパーは、--with-suexec-caller
configure
+ オプションで指定した正しいユーザで起動されていることを確認しますが、
+ システム上でこのチェックが行なわれる前に、
+ suEXEC が呼ぶシステムやライブラリが脆弱である可能性は残ります。対抗策として、
+ 一般に良い習慣ともされいますが、
+ ファイルシステムパーミッションを使って
+ Apache の実行時のグループのみが suEXEC を実行できるように
+ するのが良いでしょう。
たとえば、次のようにサーバが設定されていたとします。
+ +suexec
が "/usr/local/apache2/sbin/suexec"
+ にインストールされていた場合、次のように設定する必要があります。
これで Apache が実行されるグループのみが + suEXEC ラッパーを実行できるということを + 確証します。
起動時に、Apache は "sbin" ディレクトリで - "suexec" を探します +
起動時に、Apache は --sbindir
+ オプションで設定されたディレクトリで
+ suexec
を探します
(デフォルトは "/usr/local/apache/sbin/suexec") 。
適切に設定された suEXEC がみつかると、
エラーログに以下のメッセージが出力されます。
suEXEC の仕組みを使用するのが初めてで、Apache が既に動作中であれば、 Apache を kill して、再起動しなければなりません。HUP シグナルや USR1 シグナルによる単純な再起動では不十分です。
-suEXEC を無効にする場合は、"suexec" ファイルを削除してから +
suEXEC を無効にする場合は、suexec
ファイルを削除してから
Apache を kill して再起動します。
suEXEC wrapper は、上記で述べた --with-suexec-logfile +
suEXEC wrapper は、上記で述べた --with-suexec-logfile
オプションで指定されたファイルにログ情報を記録します。
wrapper を適切に設定、インストールできていると思う場合、
どこで迷っているか見ようとするならこのログとサーバの
@@ -520,7 +555,7 @@
- セキュリティと効率の理由から、suEXEC の全てのリクエストは
+ セキュリティと効率の理由から、suEXEC
の全てのリクエストは
仮想ホストへのリクエストにおける最上位のドキュメントルート内か、
ユーザディレクトリへのリクエストにおける個々のユーザの最上位の
ドキュメントルート内に残らなければなりません。
diff --git a/docs/manual/urlmapping.xml.ja b/docs/manual/urlmapping.xml.ja
index 06c12938b8..3e475f9c83 100644
--- a/docs/manual/urlmapping.xml.ja
+++ b/docs/manual/urlmapping.xml.ja
@@ -1,7 +1,7 @@
-
+
は http://example.com/~user/cgi-bin/script.cgi
への
@@ -140,7 +140,7 @@
/home/user/public_html/file.html
にマップされるようにするには、
以下のように AliasMatch
ディレクティブを使います: