]> granicus.if.org Git - apache/blob - docs/manual/vhosts/name-based.xml.ja
Rebuild Humbedooh's changes.
[apache] / docs / manual / vhosts / name-based.xml.ja
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
4 <!-- English Revision: 420990:1330878 (outdated) -->
5
6 <!--
7  Licensed to the Apache Software Foundation (ASF) under one or more
8  contributor license agreements.  See the NOTICE file distributed with
9  this work for additional information regarding copyright ownership.
10  The ASF licenses this file to You under the Apache License, Version 2.0
11  (the "License"); you may not use this file except in compliance with
12  the License.  You may obtain a copy of the License at
13
14      http://www.apache.org/licenses/LICENSE-2.0
15
16  Unless required by applicable law or agreed to in writing, software
17  distributed under the License is distributed on an "AS IS" BASIS,
18  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  See the License for the specific language governing permissions and
20  limitations under the License.
21 -->
22
23 <manualpage metafile="name-based.xml.meta">
24 <parentdocument href="./">バーチャルホスト</parentdocument>
25 <title>名前ベースのバーチャルホスト</title>
26
27 <summary>
28     <p>この文書では名前ベースのバーチャルホストをどんなとき、
29     どうやって使うかを説明します。</p>
30 </summary>
31
32 <seealso><a href="ip-based.html">ネームベースのバーチャルホスト</a></seealso>
33 <seealso><a href="details.html">バーチャルホストのマッチングについての詳細</a></seealso>
34 <seealso><a href="mass.html">大量のバーチャルホストの動的な設定</a></seealso>
35 <seealso><a href="examples.html">バーチャルホストの一般的な設定例</a></seealso>
36 <seealso><a href="examples.html#serverpath">ServerPath 設定例</a></seealso>
37
38 <section id="namevip"><title>名前ベースと IP ベースのバーチャルホストの比較</title>
39
40     <p>IP ベースのバーチャルホストでは、応答する
41     バーチャルホストへのコネクションを決定するために IP
42     アドレスを使用します。ですから、それぞれのホストに個々に IP
43     アドレスが必要になります。これに対して名前ベースのバーチャルホストでは、
44     クライアントが HTTP ヘッダの一部としてホスト名を告げる、
45     ということに依存します。この技術で同一 IP 
46     アドレスを異なる多数のホストで共有しています。</p>
47
48     <p>名前ベースのバーチャルホストは通常単純で、それぞれのホスト名と
49     それに対応する正確な IP アドレスを DNS で設定し、異なる
50     ホスト名を区別するように Apache HTTP サーバを設定するだけです。
51     さらに、名前ベースのバーチャルホストは不足する IP
52     アドレスの需要を緩和します。したがって、IP ベースのバーチャルホストを
53     選択すべき特定の理由がなければ名前ベースのバーチャルホストを使うべきです。
54     IP ベースのバーチャルホストを使用することを考慮する理由として、</p>
55
56     <ul> 
57       <li>名前ベースのバーチャルホストに対応していない古いクライアントがある
58       名前ベースのバーチャルホストが働くためには、クライアントは
59       HTTP ホストヘッダを送ってこなければなりません。
60       これは HTTP/1.1 の仕様で要求されていて、すべての現代的な
61       HTTP/1.0 ブラウザでも拡張として実装されています。
62       とても古いクライアントをサポートしつつ、名前ベースの
63       バーチャルホストを行いたい場合は、この文書の最後の方に
64       書かれている解決策になるかもしれない方法を見てください。</li>
65
66       <li>名前ベースのバーチャルホストは SSL プロトコルの特徴により、
67       SSL セキュアサーバには使えません。</li>
68
69       <li>オペレーティングシステムやネットワーク装置のなかには、
70       別の IP アドレス上でない場合、複数のホストを別扱いできないような
71       帯域管理の方法を実装しているものがあります。</li>
72     </ul>
73
74 </section>
75
76 <section id="using"><title>名前ベースのバーチャルホストを利用する</title>
77
78 <related>
79     <modulelist>
80     <module>core</module>
81     </modulelist>
82
83     <directivelist>
84     <directive module="core">DocumentRoot</directive>
85     <directive module="core">NameVirtualHost</directive>
86     <directive module="core">ServerAlias</directive>
87     <directive module="core">ServerName</directive>
88     <directive module="core">ServerPath</directive>
89     <directive module="core">VirtualHost</directive>
90     <directive module="core" type="section">VirtualHost</directive>
91     </directivelist>
92 </related>
93
94     <p>名前ベースのバーチャルホストを使うには、そのホストへの
95     リクエストを受け付けるサーバの IP アドレス (もしかしたらポートも)
96     を指定する必要があります。
97     これは <directive module="core">NameVirtualHost</directive>
98     ディレクティブで設定します。通常、<directive 
99     module="core">NameVirtualHost</directive> で
100     <code>*</code> の属性を使ってサーバの全ての IP アドレスを使います。
101     (例えば SSL の使用などで) 複数のポートを使うことを計画しているのであれば、
102     引数に <code>*:80</code> のようにポートも含めるようにしてください。
103     <directive module="core">NameVirtualHost</directive> ディレクティブで
104     IP アドレスを書いても、
105     自動的にサーバがその IP アドレスをリッスンするということはないことに
106     注意してください。詳細は「<a href="../bind.html">Apache の使うアドレスと
107     ポートを設定する</a>」を読んでください。さらに、ここで指定された
108     IP アドレスは全てサーバのネットワークインターフェースと関連付けられて
109     いなければなりません。</p>
110
111     <p>次は、扱うホストそれぞれに対して <directive type="section"
112     module="core">VirtualHost</directive> ブロックを
113     作成してください。<directive module="core" type="section">VirtualHost</directive>
114     ディレクティブの引数は <directive module="core">NameVirtualHost</directive>
115     ディレクティブの引数と同じにしてください (すなわち、IP アドレスか、全てのアドレスを意味する
116     <code>*</code>)。それぞれの <directive module="core" type="section">VirtualHost</directive>
117     ディレクティブの中には、最低限、どのホストが扱われるかを示す <directive
118     module="core">ServerName</directive> ディレクティブと、
119     そのホスト用のコンテンツがファイルシステム上のどこにあるかを示す
120     <directive module="core">DocumentRoot</directive> ディレクティブを
121     書く必要があります。</p>
122
123     <note><title>メインホストはなくなります</title>
124         <p>既にあるウェブサーバにバーチャルホストを追加する場合、
125         既存のウェブサーバに対しても <directive module="core"
126         type="section">VirtualHost</directive>
127         ブロックを作らなければなりません。このバーチャルホストの
128         <directive module="core">ServerName</directive> と
129         <directive module="core">DocumentRoot</directive>
130         は、グローバルな <directive module="core">ServerName</directive> と
131         <directive module="core">DocumentRoot</directive>
132         と同じものにします。また、このバーチャルホストを設定ファイルの中で
133         先頭に置いて、デフォルトホストとして動作するようにします。</p>
134     </note>
135
136     <p>たとえば、<code>www.domain.tld</code> を動かしていて、
137     さらにバーチャルホスト <code>www.otherdomain.tld</code>
138     を追加するとしましょう。このバーチャルホストは同一 IP を指しているとします。
139     そのような場合は、<code>httpd.conf</code>
140     に以下のようなコードを追加するだけです</p>
141
142     <example>
143         NameVirtualHost *:80<br />
144         <br />
145         &lt;VirtualHost *:80&gt;<br />
146         <indent>
147             ServerName www.domain.tld<br />
148             ServerAlias domain.tld *.domain.tld<br />
149             DocumentRoot /www/domain<br />
150         </indent>
151         &lt;/VirtualHost&gt;<br />
152         <br />
153         &lt;VirtualHost *:80&gt;<br />
154         <indent>ServerName www.otherdomain.tld<br />
155             DocumentRoot /www/otherdomain<br />
156         </indent>
157         &lt;/VirtualHost&gt;<br />
158     </example>
159
160     <p><directive module="core">NameVirtualHost</directive> 及び
161     <directive module="core">VirtualHost</directive> のどちらの場合も、
162     * の部分には明示的に IP アドレスを指定することができます。
163     例えば、ある IP アドレスでは名前ベースのバーチャルホストを使いたい一方で、
164     別の IP アドレスでは、他の IP ベースのバーチャルホストや
165     別組の名前ベースのバーチャルホストを使いたい場合、
166     そう設定することになるでしょう。</p>
167
168     <p>複数の名前でサーバアクセスができるようにしたいことも多いでしょう。
169     このようなことは、<directive module="core"
170     >ServerAlias</directive> ディレクティブを <directive module="core"
171     type="section">VirtualHost</directive>
172     セクションに記述することで実現できます。
173     例えば上記の <directive module="core" 
174     type="section">VirtualHost</directive> の例であれば、
175     次のように一覧に挙げられた名前が、
176     ユーザが同一のウェブサイトとして目にして使用できるサーバ名である、
177     と <directive module="core">ServerAlias</directive>
178     ディレクティブで指定できます。</p> 
179
180     <example>
181         ServerAlias domain.tld *.domain.tld
182     </example>
183
184     <p><code>domain.tld</code> ドメインへの全てのホストへのリクエストは
185     <code>www.domain.tld</code> のバーチャルホストが処理します。
186     名前をマッチさせるために、ワイルドカード文字 * や ? 
187     を使用することもできます。もちろん思いつきの名前を作って、
188     <directive module="core">ServerName</directive> や 
189     <directive module="core">ServerAlias</directive>
190     にその名前を書くといったことはできません。まずは、
191     これらの名前が サーバに付けられた IP アドレスにマップされるように
192     DNS サーバを適切に設定しなければなりません。</p>
193
194     <p>最後に、<directive module="core"
195     type="section">VirtualHost</directive> コンテナの中に
196     他のディレクティブを書くことで、バーチャルホストの設定を細かく調整
197     することができます。
198     ほとんどのディレクティブはこれらのコンテナに設置することができて、
199     変更点はそのバーチャルホストに対してのみ有効になります。
200     どのディレクティブを書くことができるかは、ディレクティブの <a
201     href="../mod/directive-dist.html#context">コンテキスト</a> を
202     調べてください。<em>主サーバコンテキスト</em>
203     (<directive module="core" type="section">VirtualHost</directive>
204     コンテナの外) の設定用ディレクティブはバーチャルホストでの設定で
205     上書きされない場合のみ使用されます。</p>
206
207     <p>リクエストが来ると、サーバはまず最初に <directive module="core"
208     type="section">NameVirtualHost</directive>
209     にマッチする IP アドレスかどうかをチェックします。マッチすれば
210     マッチした IP アドレスの <directive module="core" 
211     type="section">VirtualHost</directive>
212     のそれぞれのセクションの中から 
213     <directive module="core">ServerName</directive> か
214     <directive module="core">ServerAlias</directive> 
215     に要求されたホスト名があるか探します。
216     見つかればそのサーバ用の設定を使います。マッチするバーチャルホスト
217     が見つからなければ、マッチした IP アドレスの 
218     <strong>リストの最初にあるバーチャルホスト</strong> が使われます。</p>
219
220     <p>結果として、リストの最初のバーチャルホストが <em>デフォルト</em> の
221     バーチャルホストになります。IP アドレスが <directive 
222     module="core">NameVirtualHost</directive>
223     ディレクティブにマッチした場合は、<em>メインのサーバ</em> の
224     <directive module="core">DocumentRoot</directive> 
225     は<strong>決して使われません</strong>
226     どのバーチャルホストにもマッチしないリクエストに対して、
227     特別な設定をしたいのであれば、設定ファイル中の最初の
228     <code>&lt;VirtualHost&gt;</code> コンテナにそれを記述してください。</p>
229
230 </section>
231
232 <section id="compat"><title>古いブラウザとの互換性</title>
233
234     <p>以前述べたように、名前ベースのバーチャルホストが正しく動作する
235     ために必要な情報を送ってこないクライアントが依然として存在しています。
236     そのようなクライアントに対しては、該当する IP アドレスについて、
237     一番最初に設定されているバーチャルホスト
238     (<cite>プライマリ</cite>の名前ベースのバーチャルホスト)
239     からページが送り返されます。</p>
240
241     <note><title>どのぐらい古いの ?</title>
242     <p>「古い」と表現している場合、本当に古いことを意味して使っています。
243     不幸にして今現在でもこのような古いブラウザに遭遇することがあります。
244     現在のブラウザは全て、名前ベースのバーチャルホストに必要な
245     <code>Host</code> ヘッダを送ります。</p>
246     </note>
247
248     <p><a href="../mod/core.html#serverpath"><code>ServerPath</code></a>
249     ディレクティブで対処が可能です。ちょっと不格好ですけれども。</p>
250
251     <p>設定例</p>
252
253     <example>
254         NameVirtualHost 111.22.33.44<br />
255         <br />
256         &lt;VirtualHost 111.22.33.44&gt;<br />
257         <indent>
258             ServerName www.domain.tld<br />
259             ServerPath /domain<br />
260             DocumentRoot /web/domain<br />
261         </indent>
262         &lt;/VirtualHost&gt;<br />
263     </example>
264
265     <p>この例にはどういう意味があるでしょうか? これは
266     "<code>/domain</code>" で始まる URI へのリクエストはすべて、
267     バーチャルホスト <code>www.domain.tld</code> で処理される、
268     という意味です。つまり、すべてのクライアントで
269     <code>http://www.domain.tld/domain/</code> でアクセスできるページが、
270     <code>Host:</code> ヘッダを送ってくるクライアントであれば
271     <code>http://www.domain.tld/</code> としてもアクセスできる、
272     という意味です。</p>
273
274     <p>これが動作するようにするには、
275     プライマリのバーチャルホストのページに
276     <code>http://www.domain.tld/domain/</code> へのリンクを設置します。
277     そして、バーチャルホストのページでは、純粋な相対リンク (<em>例:</em>
278     "<code>file.html</code>" や "<code>../icons/image.gif</code>")、
279     あるいは <code>/domain/</code> で始まるリンク (<em>例:</em>
280     "<code>http://www.domain.tld/domain/misc/file.html</code>" や
281     "<code>/domain/misc/file.html</code>") だけを設置します。</p>
282
283     <p>これには、幾分かの規律が必要となりますが、
284     このようなガイドラインを忠実に守ることにより、たいていの場合、
285     すべてのブラウザで ― 新しいブラウザでも古いものでも ―
286     作成したページが見えるということを保証します。</p>
287
288 </section>
289 </manualpage>