1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>名前ベースのバーチャルホスト - Apache HTTP サーバ</title>
9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
12<script src="/style/scripts/prettify.min.js" type="text/javascript">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body id="manual-page"><div id="page-header">
17<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p>
18<p class="apache">Apache HTTP サーバ バージョン 2.4</p>
19<img alt="" src="/images/feather.gif" /></div>
20<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> &gt; <a href="../">バージョン 2.4</a> &gt; <a href="./">バーチャルホスト</a></div><div id="page-content"><div id="preamble"><h1>名前ベースのバーチャルホスト</h1>
23<div class="toplang">
24<p><span>翻訳済み言語: </span><a href="/de/vhosts/name-based.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
25<a href="/en/vhosts/name-based.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
26<a href="/fr/vhosts/name-based.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
27<a href="/ja/vhosts/name-based.html" title="Japanese">&nbsp;ja&nbsp;</a> |
28<a href="/ko/vhosts/name-based.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
29<a href="/tr/vhosts/name-based.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
30</div>
31<div class="outofdate">この日本語訳はすでに古くなっている
32            可能性があります。
33            最近更新された内容を見るには英語版をご覧下さい。
34        </div>
35
36    <p>この文書では名前ベースのバーチャルホストをどんなとき、
37    どうやって使うかを説明します。</p>
38</div>
39<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#namevip">名前ベースと IP ベースのバーチャルホストの比較</a></li>
40<li><img alt="" src="/images/down.gif" /> <a href="#using">名前ベースのバーチャルホストを利用する</a></li>
41<li><img alt="" src="/images/down.gif" /> <a href="#compat">古いブラウザとの互換性</a></li>
42</ul><h3>参照</h3><ul class="seealso"><li><a href="ip-based.html">ネームベースのバーチャルホスト</a></li><li><a href="details.html">バーチャルホストのマッチングについての詳細</a></li><li><a href="mass.html">大量のバーチャルホストの動的な設定</a></li><li><a href="examples.html">バーチャルホストの一般的な設定例</a></li><li><a href="examples.html#serverpath">ServerPath 設定例</a></li></ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
43<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
44<div class="section">
45<h2><a name="namevip" id="namevip">名前ベースと IP ベースのバーチャルホストの比較</a></h2>
46
47    <p>IP ベースのバーチャルホストでは、応答する
48    バーチャルホストへのコネクションを決定するために IP
49    アドレスを使用します。ですから、それぞれのホストに個々に IP
50    アドレスが必要になります。これに対して名前ベースのバーチャルホストでは、
51    クライアントが HTTP ヘッダの一部としてホスト名を告げる、
52    ということに依存します。この技術で同一 IP 
53    アドレスを異なる多数のホストで共有しています。</p>
54
55    <p>名前ベースのバーチャルホストは通常単純で、それぞれのホスト名と
56    それに対応する正確な IP アドレスを DNS で設定し、異なる
57    ホスト名を区別するように Apache HTTP サーバを設定するだけです。
58    さらに、名前ベースのバーチャルホストは不足する IP
59    アドレスの需要を緩和します。したがって、IP ベースのバーチャルホストを
60    選択すべき特定の理由がなければ名前ベースのバーチャルホストを使うべきです。
61    IP ベースのバーチャルホストを使用することを考慮する理由として、</p>
62
63    <ul> 
64      <li>名前ベースのバーチャルホストに対応していない古いクライアントがある
65      名前ベースのバーチャルホストが働くためには、クライアントは
66      HTTP ホストヘッダを送ってこなければなりません。
67      これは HTTP/1.1 の仕様で要求されていて、すべての現代的な
68      HTTP/1.0 ブラウザでも拡張として実装されています。
69      とても古いクライアントをサポートしつつ、名前ベースの
70      バーチャルホストを行いたい場合は、この文書の最後の方に
71      書かれている解決策になるかもしれない方法を見てください。</li>
72
73      <li>名前ベースのバーチャルホストは SSL プロトコルの特徴により、
74      SSL セキュアサーバには使えません。</li>
75
76      <li>オペレーティングシステムやネットワーク装置のなかには、
77      別の IP アドレス上でない場合、複数のホストを別扱いできないような
78      帯域管理の方法を実装しているものがあります。</li>
79    </ul>
80
81</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
82<div class="section">
83<h2><a name="using" id="using">名前ベースのバーチャルホストを利用する</a></h2>
84
85<table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</th></tr><tr><td><ul><li><code class="module"><a href="/mod/core.html">core</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code></li><li><code class="directive"><a href="/mod/core.html#namevirtualhost">NameVirtualHost</a></code></li><li><code class="directive"><a href="/mod/core.html#serveralias">ServerAlias</a></code></li><li><code class="directive"><a href="/mod/core.html#servername">ServerName</a></code></li><li><code class="directive"><a href="/mod/core.html#serverpath">ServerPath</a></code></li><li><code class="directive"><a href="/mod/core.html#virtualhost">VirtualHost</a></code></li><li><code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code></li></ul></td></tr></table>
86
87    <p>名前ベースのバーチャルホストを使うには、そのホストへの
88    リクエストを受け付けるサーバの IP アドレス (もしかしたらポートも)
89    を指定する必要があります。
90    これは <code class="directive"><a href="/mod/core.html#namevirtualhost">NameVirtualHost</a></code>
91    ディレクティブで設定します。通常、<code class="directive"><a href="/mod/core.html#namevirtualhost">NameVirtualHost</a></code> で
92    <code>*</code> の属性を使ってサーバの全ての IP アドレスを使います。
93    (例えば SSL の使用などで) 複数のポートを使うことを計画しているのであれば、
94    引数に <code>*:80</code> のようにポートも含めるようにしてください。
95    <code class="directive"><a href="/mod/core.html#namevirtualhost">NameVirtualHost</a></code> ディレクティブで
96    IP アドレスを書いても、
97    自動的にサーバがその IP アドレスをリッスンするということはないことに
98    注意してください。詳細は「<a href="/bind.html">Apache の使うアドレスと
99    ポートを設定する</a>」を読んでください。さらに、ここで指定された
100    IP アドレスは全てサーバのネットワークインターフェースと関連付けられて
101    いなければなりません。</p>
102
103    <p>次は、扱うホストそれぞれに対して <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> ブロックを
104    作成してください。<code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
105    ディレクティブの引数は <code class="directive"><a href="/mod/core.html#namevirtualhost">NameVirtualHost</a></code>
106    ディレクティブの引数と同じにしてください (すなわち、IP アドレスか、全てのアドレスを意味する
107    <code>*</code>)。それぞれの <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
108    ディレクティブの中には、最低限、どのホストが扱われるかを示す <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code> ディレクティブと、
109    そのホスト用のコンテンツがファイルシステム上のどこにあるかを示す
110    <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> ディレクティブを
111    書く必要があります。</p>
112
113    <div class="note"><h3>メインホストはなくなります</h3>
114        <p>既にあるウェブサーバにバーチャルホストを追加する場合、
115        既存のウェブサーバに対しても <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
116        ブロックを作らなければなりません。このバーチャルホストの
117        <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code> と
118        <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code>
119        は、グローバルな <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code> と
120        <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code>
121        と同じものにします。また、このバーチャルホストを設定ファイルの中で
122        先頭に置いて、デフォルトホストとして動作するようにします。</p>
123    </div>
124
125    <p>たとえば、<code>www.domain.tld</code> を動かしていて、
126    さらにバーチャルホスト <code>www.otherdomain.tld</code>
127    を追加するとしましょう。このバーチャルホストは同一 IP を指しているとします。
128    そのような場合は、<code>httpd.conf</code>
129    に以下のようなコードを追加するだけです</p>
130
131    <div class="example"><p><code>
132        NameVirtualHost *:80<br />
133        <br />
134        &lt;VirtualHost *:80&gt;<br />
135        <span class="indent">
136            ServerName www.domain.tld<br />
137            ServerAlias domain.tld *.domain.tld<br />
138            DocumentRoot /www/domain<br />
139        </span>
140        &lt;/VirtualHost&gt;<br />
141        <br />
142        &lt;VirtualHost *:80&gt;<br />
143        <span class="indent">ServerName www.otherdomain.tld<br />
144            DocumentRoot /www/otherdomain<br />
145        </span>
146        &lt;/VirtualHost&gt;<br />
147    </code></p></div>
148
149    <p><code class="directive"><a href="/mod/core.html#namevirtualhost">NameVirtualHost</a></code> 及び
150    <code class="directive"><a href="/mod/core.html#virtualhost">VirtualHost</a></code> のどちらの場合も、
151    * の部分には明示的に IP アドレスを指定することができます。
152    例えば、ある IP アドレスでは名前ベースのバーチャルホストを使いたい一方で、
153    別の IP アドレスでは、他の IP ベースのバーチャルホストや
154    別組の名前ベースのバーチャルホストを使いたい場合、
155    そう設定することになるでしょう。</p>
156
157    <p>複数の名前でサーバアクセスができるようにしたいことも多いでしょう。
158    このようなことは、<code class="directive"><a href="/mod/core.html#serveralias">ServerAlias</a></code> ディレクティブを <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
159    セクションに記述することで実現できます。
160    例えば上記の <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> の例であれば、
161    次のように一覧に挙げられた名前が、
162    ユーザが同一のウェブサイトとして目にして使用できるサーバ名である、
163    と <code class="directive"><a href="/mod/core.html#serveralias">ServerAlias</a></code>
164    ディレクティブで指定できます。</p> 
165
166    <div class="example"><p><code>
167        ServerAlias domain.tld *.domain.tld
168    </code></p></div>
169
170    <p><code>domain.tld</code> ドメインへの全てのホストへのリクエストは
171    <code>www.domain.tld</code> のバーチャルホストが処理します。
172    名前をマッチさせるために、ワイルドカード文字 * や ? 
173    を使用することもできます。もちろん思いつきの名前を作って、
174    <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code> や 
175    <code class="directive"><a href="/mod/core.html#serveralias">ServerAlias</a></code>
176    にその名前を書くといったことはできません。まずは、
177    これらの名前が サーバに付けられた IP アドレスにマップされるように
178    DNS サーバを適切に設定しなければなりません。</p>
179
180    <p>最後に、<code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> コンテナの中に
181    他のディレクティブを書くことで、バーチャルホストの設定を細かく調整
182    することができます。
183    ほとんどのディレクティブはこれらのコンテナに設置することができて、
184    変更点はそのバーチャルホストに対してのみ有効になります。
185    どのディレクティブを書くことができるかは、ディレクティブの <a href="/mod/directive-dist.html#context">コンテキスト</a> を
186    調べてください。<em>主サーバコンテキスト</em>
187    (<code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
188    コンテナの外) の設定用ディレクティブはバーチャルホストでの設定で
189    上書きされない場合のみ使用されます。</p>
190
191    <p>リクエストが来ると、サーバはまず最初に <code class="directive"><a href="/mod/core.html#namevirtualhost">&lt;NameVirtualHost&gt;</a></code>
192    にマッチする IP アドレスかどうかをチェックします。マッチすれば
193    マッチした IP アドレスの <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
194    のそれぞれのセクションの中から 
195    <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code> か
196    <code class="directive"><a href="/mod/core.html#serveralias">ServerAlias</a></code> 
197    に要求されたホスト名があるか探します。
198    見つかればそのサーバ用の設定を使います。マッチするバーチャルホスト
199    が見つからなければ、マッチした IP アドレスの 
200    <strong>リストの最初にあるバーチャルホスト</strong> が使われます。</p>
201
202    <p>結果として、リストの最初のバーチャルホストが <em>デフォルト</em> の
203    バーチャルホストになります。IP アドレスが <code class="directive"><a href="/mod/core.html#namevirtualhost">NameVirtualHost</a></code>
204    ディレクティブにマッチした場合は、<em>メインのサーバ</em> の
205    <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> 
206    は<strong>決して使われません</strong>
207    どのバーチャルホストにもマッチしないリクエストに対して、
208    特別な設定をしたいのであれば、設定ファイル中の最初の
209    <code>&lt;VirtualHost&gt;</code> コンテナにそれを記述してください。</p>
210
211</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
212<div class="section">
213<h2><a name="compat" id="compat">古いブラウザとの互換性</a></h2>
214
215    <p>以前述べたように、名前ベースのバーチャルホストが正しく動作する
216    ために必要な情報を送ってこないクライアントが依然として存在しています。
217    そのようなクライアントに対しては、該当する IP アドレスについて、
218    一番最初に設定されているバーチャルホスト
219    (<cite>プライマリ</cite>の名前ベースのバーチャルホスト)
220    からページが送り返されます。</p>
221
222    <div class="note"><h3>どのぐらい古いの ?</h3>
223    <p>「古い」と表現している場合、本当に古いことを意味して使っています。
224    不幸にして今現在でもこのような古いブラウザに遭遇することがあります。
225    現在のブラウザは全て、名前ベースのバーチャルホストに必要な
226    <code>Host</code> ヘッダを送ります。</p>
227    </div>
228
229    <p><a href="/mod/core.html#serverpath"><code>ServerPath</code></a>
230    ディレクティブで対処が可能です。ちょっと不格好ですけれども。</p>
231
232    <p>設定例</p>
233
234    <div class="example"><p><code>
235        NameVirtualHost 111.22.33.44<br />
236        <br />
237        &lt;VirtualHost 111.22.33.44&gt;<br />
238        <span class="indent">
239            ServerName www.domain.tld<br />
240            ServerPath /domain<br />
241            DocumentRoot /web/domain<br />
242        </span>
243        &lt;/VirtualHost&gt;<br />
244    </code></p></div>
245
246    <p>この例にはどういう意味があるでしょうか? これは
247    "<code>/domain</code>" で始まる URI へのリクエストはすべて、
248    バーチャルホスト <code>www.domain.tld</code> で処理される、
249    という意味です。つまり、すべてのクライアントで
250    <code>http://www.domain.tld/domain/</code> でアクセスできるページが、
251    <code>Host:</code> ヘッダを送ってくるクライアントであれば
252    <code>http://www.domain.tld/</code> としてもアクセスできる、
253    という意味です。</p>
254
255    <p>これが動作するようにするには、
256    プライマリのバーチャルホストのページに
257    <code>http://www.domain.tld/domain/</code> へのリンクを設置します。
258    そして、バーチャルホストのページでは、純粋な相対リンク (<em>例:</em>
259    "<code>file.html</code>" や "<code>/icons/image.gif</code>")、
260    あるいは <code>/domain/</code> で始まるリンク (<em>例:</em>
261    "<code>http://www.domain.tld/domain/misc/file.html</code>" や
262    "<code>/domain/misc/file.html</code>") だけを設置します。</p>
263
264    <p>これには、幾分かの規律が必要となりますが、
265    このようなガイドラインを忠実に守ることにより、たいていの場合、
266    すべてのブラウザで ― 新しいブラウザでも古いものでも ―
267    作成したページが見えるということを保証します。</p>
268
269</div></div>
270<div class="bottomlang">
271<p><span>翻訳済み言語: </span><a href="/de/vhosts/name-based.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
272<a href="/en/vhosts/name-based.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
273<a href="/fr/vhosts/name-based.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
274<a href="/ja/vhosts/name-based.html" title="Japanese">&nbsp;ja&nbsp;</a> |
275<a href="/ko/vhosts/name-based.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
276<a href="/tr/vhosts/name-based.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
277</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
278<script type="text/javascript"><!--//--><![CDATA[//><!--
279var comments_shortname = 'httpd';
280var comments_identifier = 'http://httpd.apache.org/docs/2.4/vhosts/name-based.html';
281(function(w, d) {
282    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
283        d.write('<div id="comments_thread"><\/div>');
284        var s = d.createElement('script');
285        s.type = 'text/javascript';
286        s.async = true;
287        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
288        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
289    }
290    else { 
291        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
292    }
293})(window, document);
294//--><!]]></script></div><div id="footer">
295<p class="apache">Copyright 2014 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p>
296<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
297if (typeof(prettyPrint) !== 'undefined') {
298    prettyPrint();
299}
300//--><!]]></script>
301</body></html>