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.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.2</p> 19<img alt="" src="/images/feather.gif" /></div> 20<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン 2.2</a> > <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"> de </a> | 25<a href="/en/vhosts/name-based.html" hreflang="en" rel="alternate" title="English"> en </a> | 26<a href="/fr/vhosts/name-based.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 27<a href="/ja/vhosts/name-based.html" title="Japanese"> ja </a> | 28<a href="/ko/vhosts/name-based.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 29<a href="/tr/vhosts/name-based.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </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"><VirtualHost></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"><VirtualHost></a></code> ブロックを 104 作成してください。<code class="directive"><a href="/mod/core.html#virtualhost"><VirtualHost></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"><VirtualHost></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"><VirtualHost></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 <VirtualHost *:80><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 </VirtualHost><br /> 141 <br /> 142 <VirtualHost *:80><br /> 143 <span class="indent">ServerName www.otherdomain.tld<br /> 144 DocumentRoot /www/otherdomain<br /> 145 </span> 146 </VirtualHost><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"><VirtualHost></a></code> 159 セクションに記述することで実現できます。 160 例えば上記の <code class="directive"><a href="/mod/core.html#virtualhost"><VirtualHost></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"><VirtualHost></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"><VirtualHost></a></code> 188 コンテナの外) の設定用ディレクティブはバーチャルホストでの設定で 189 上書きされない場合のみ使用されます。</p> 190 191 <p>リクエストが来ると、サーバはまず最初に <code class="directive"><a href="/mod/core.html#namevirtualhost"><NameVirtualHost></a></code> 192 にマッチする IP アドレスかどうかをチェックします。マッチすれば 193 マッチした IP アドレスの <code class="directive"><a href="/mod/core.html#virtualhost"><VirtualHost></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><VirtualHost></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 <VirtualHost 111.22.33.44><br /> 238 <span class="indent"> 239 ServerName www.domain.tld<br /> 240 ServerPath /domain<br /> 241 DocumentRoot /web/domain<br /> 242 </span> 243 </VirtualHost><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"> de </a> | 272<a href="/en/vhosts/name-based.html" hreflang="en" rel="alternate" title="English"> en </a> | 273<a href="/fr/vhosts/name-based.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 274<a href="/ja/vhosts/name-based.html" title="Japanese"> ja </a> | 275<a href="/ko/vhosts/name-based.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 276<a href="/tr/vhosts/name-based.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </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&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.2/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 2013 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>