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="<-" 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.4</a> > <a href="./">バーチャルホスト</a></div><div id="page-content"><div id="preamble"><h1>バーチャルホストの例</h1> 23<div class="toplang"> 24<p><span>翻訳済み言語: </span><a href="/en/vhosts/examples.html" hreflang="en" rel="alternate" title="English"> en </a> | 25<a href="/fr/vhosts/examples.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 26<a href="/ja/vhosts/examples.html" title="Japanese"> ja </a> | 27<a href="/ko/vhosts/examples.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 28<a href="/tr/vhosts/examples.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> 29</div> 30<div class="outofdate">この日本語訳はすでに古くなっている 31 可能性があります。 32 最近更新された内容を見るには英語版をご覧下さい。 33 </div> 34 35 36 <p>この文書は、バーチャルホストの設定の際に 37 よくある質問に答えるものです。想定している対象は <a href="name-based.html">名前ベース</a> や <a href="ip-based.html">IP ベース</a> のバーチャルホストを使って 38 一つのサーバで複数のウェブサイトを運用している状況です。 39 </p> 40 41</div> 42<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#purename">一つの IP アドレスでいくつかの名前ベースの 43 ウェブサイトを実行する</a></li> 44<li><img alt="" src="/images/down.gif" /> <a href="#twoips">複数の IP アドレスのあるホストで名前ベースの 45 ホスティングを行なう</a></li> 46<li><img alt="" src="/images/down.gif" /> <a href="#intraextra">違う IP アドレス (例えば、内部と外部アドレス) 47 で同じコンテンツを送る</a></li> 48<li><img alt="" src="/images/down.gif" /> <a href="#port">違うポートで違うサイトを運営する</a></li> 49<li><img alt="" src="/images/down.gif" /> <a href="#ip">IP ベースのバーチャルホスティング</a></li> 50<li><img alt="" src="/images/down.gif" /> <a href="#ipport">ポートベースと IP ベースの混ざった 51 バーチャルホスト</a></li> 52<li><img alt="" src="/images/down.gif" /> <a href="#mixed">名前ベースと IP ベースを混ぜた 53 バーチャルホスト</a></li> 54<li><img alt="" src="/images/down.gif" /> <a href="#proxy"><code>Virtual_host</code> と 55 mod_proxy を併用する</a></li> 56<li><img alt="" src="/images/down.gif" /> <a href="#default"><code>_default_</code> のバーチャルホストを 57 使う</a></li> 58<li><img alt="" src="/images/down.gif" /> <a href="#migrate">名前ベースのバーチャルホストから IP ベースの 59 バーチャルホストに移行する</a></li> 60<li><img alt="" src="/images/down.gif" /> <a href="#serverpath"><code>ServerPath</code> ディレクティブを 61 使う</a></li> 62</ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div> 63<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 64<div class="section"> 65<h2><a name="purename" id="purename">一つの IP アドレスでいくつかの名前ベースの 66 ウェブサイトを実行する</a></h2> 67 68 <p>サーバは IP アドレスを一つ割り当てられていて、DNS でマシンに 69 複数の名前 (CNAME) が指定されています。このマシンで 70 <code>www.example.com</code> と <code>www.example.org</code> 71 のためのウェブサーバを実行させたいとします。</p> 72 73 <div class="note"><h3>注</h3><p> 74 Apache サーバの設定でバーチャルホストの設定をしただけで、 75 知らない間にそのホスト名に対応する DNS のエントリが 76 作成されたりはしません。そのサーバの IP アドレスに解決される 77 ように DNS に名前を登録しなければ<em>なりません</em>。 78 そうでないと誰もあなたのウェブサイトを見ることはできません。 79 ローカルでのテストのために <code>hosts</code> ファイルに 80 エントリを追加することもできますが、この場合はその 81 hosts エントリのあるマシンからしか動作しません。</p> 82 </div> 83 84 <div class="example"><h3>サーバ設定</h3><p><code> 85 86 87 # Ensure that Apache listens on port 80<br /> 88 Listen 80<br /> 89 <br /> 90 # Listen for virtual host requests on all IP addresses<br /> 91 NameVirtualHost *:80<br /> 92 <br /> 93 <VirtualHost *:80><br /> 94 <span class="indent"> 95 DocumentRoot /www/example1<br /> 96 ServerName www.example.com<br /> 97 <br /> 98 # Other directives here<br /> 99 <br /> 100 </span> 101 </VirtualHost><br /> 102 <br /> 103 <VirtualHost *:80><br /> 104 <span class="indent"> 105 DocumentRoot /www/example2<br /> 106 ServerName www.example.org<br /> 107 <br /> 108 # Other directives here<br /> 109 <br /> 110 </span> 111 </VirtualHost> 112 </code></p></div> 113 114 <p>アスタリスクはすべてのアドレスにマッチしますので、主サーバは 115 リクエストを扱いません。<code>www.example.com</code> は 116 最初にあるため、優先順位は一番高くなり、<cite>default</cite> もしくは 117 <cite>primary</cite> のサーバと考えることができます。つまり、リクエストが 118 どの <code>ServerName</code> ディレクティブにもマッチしない場合、 119 一番最初の <code>VirtualHost</code> により扱われます。</p> 120 121 <div class="note"><h3>注</h3> 122 123 <p><code>*</code> をシステムの実際の IP アドレスに置き換える 124 こともできます。その場合は <code>VirtualHost</code> の引数は 125 <code>NameVirtualHost</code> の引数と同じに<em>しなければなりません 126 </em>:</p> 127 128 <div class="example"><p><code> 129 NameVirtualHost 172.20.30.40<br /> 130 <br /> 131 <VirtualHost 172.20.30.40><br /> 132 # etc ... 133 </code></p></div> 134 135 <p>しかし、IP アドレスが予測不可能なシステム 136 ――例えばプロバイダから動的に IP アドレスを取得して何らかの 137 ダイナミック DNS を使っている場合など――においては、<code>*</code> 138 指定はさらに便利です。<code>*</code> はすべての IP アドレスに 139 マッチしますので、この設定にしておけば IP アドレスが変更されても 140 設定変更せずに動作します。</p> 141 </div> 142 143 <p>名前ベースのバーチャルホスティングではほぼすべての状況で、 144 上記の設定で希望の設定になっていることでしょう。 145 実際この設定が動作しないのは、IP アドレスやポートの違いによって 146 違うコンテンツを送るときだけです。</p> 147 148 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 149<div class="section"> 150<h2><a name="twoips" id="twoips">複数の IP アドレスのあるホストで名前ベースの 151 ホスティングを行なう</a></h2> 152 153 <div class="note"> 154 <h3>注</h3><p>ここで説明されている方法は IP アドレスが 155 何個あっても同様にできます。</p> 156 </div> 157 158 <p>サーバには二つ IP アドレスがついています。一つ目 159 (<code>172.20.30.40</code>) では主サーバ 160 <code>server.domain.com</code> を扱い、もう一方 161 (<code>172.20.30.50</code>) では二つかそれ以上の数の 162 バーチャルホストを扱います。</p> 163 164 <div class="example"><h3>サーバの設定</h3><p><code> 165 166 167 Listen 80<br /> 168 <br /> 169 # This is the "main" server running on 172.20.30.40<br /> 170 ServerName server.domain.com<br /> 171 DocumentRoot /www/mainserver<br /> 172 <br /> 173 # This is the other address<br /> 174 NameVirtualHost 172.20.30.50<br /> 175 <br /> 176 <VirtualHost 172.20.30.50><br /> 177 <span class="indent"> 178 DocumentRoot /www/example1<br /> 179 ServerName www.example.com<br /> 180 <br /> 181 # Other directives here ...<br /> 182 <br /> 183 </span> 184 </VirtualHost><br /> 185 <br /> 186 <VirtualHost 172.20.30.50><br /> 187 <span class="indent"> 188 DocumentRoot /www/example2<br /> 189 ServerName www.example.org<br /> 190 <br /> 191 # Other directives here ...<br /> 192 <br /> 193 </span> 194 </VirtualHost> 195 </code></p></div> 196 197 <p><code>172.20.30.50</code> 以外のアドレスへのリクエストは主サーバ 198 が扱います。<code>172.20.30.50</code> への、未知のホスト名または 199 <code>Host:</code> ヘッダなしのリクエストは <code>www.example.com</code> 200 が扱います。</p> 201 202 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 203<div class="section"> 204<h2><a name="intraextra" id="intraextra">違う IP アドレス (例えば、内部と外部アドレス) 205 で同じコンテンツを送る</a></h2> 206 207 <p>サーバマシンは IP アドレスを二つ (<code>192.168.1.1</code> 208 と <code>172.20.30.40</code>) 持っています。このマシンは内部 209 (イントラネット) と 外部 (インターネット) のネットワークの間に 210 あります。<code>server.example.com</code> はネットワークの外からは 211 外部アドレス (<code>172.20.30.40</code>) として解決されますが、 212 ネットワークの中からは内部アドレス (<code>192.168.1.1</code>) 213 として解決されます。</p> 214 215 <p><code>VirtualHost</code> 一つだけでサーバが内部のリクエストと 216 外部のリクエストの両方に同じコンテンツで応答するようにできます。</p> 217 218 <div class="example"><h3>サーバの設定</h3><p><code> 219 220 221 NameVirtualHost 192.168.1.1<br /> 222 NameVirtualHost 172.20.30.40<br /> 223 <br /> 224 <VirtualHost 192.168.1.1 172.20.30.40><br /> 225 <span class="indent"> 226 DocumentRoot /www/server1<br /> 227 ServerName server.example.com<br /> 228 ServerAlias server<br /> 229 </span> 230 </VirtualHost> 231 </code></p></div> 232 233 <p>これでどちらのネットワークからのリクエストも同じ <code>VirtualHost</code> 234 で扱われるようになります。</p> 235 236 <div class="note"><h3>注:</h3><p>内部ネットワークでは完全なホスト名の 237 <code>server.example.com</code> の代わりに、単に <code>server</code> 238 を使うことができます。</p> 239 240 <p>上の例では、IP アドレスのリストを、すべてのアドレスに 241 同じコンテンツで応答する <code>*</code> に置き換えられます。</p> 242 </div> 243 244 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 245<div class="section"> 246<h2><a name="port" id="port">違うポートで違うサイトを運営する</a></h2> 247 248 <p>同じ IP に複数のドメインがあり、さらに複数のポートを使って 249 リクエストを扱いたいときがあります。"NameVirtualHost" タグの中で 250 ポートを定義することで、これを動作させられます。 251 NameVirtualHost name:port 無しや Listen ディレクティブで 252 <VirtualHost name:port> を使おうとしても、その設定は動作しません。</p> 253 254 <div class="example"><h3>サーバの設定</h3><p><code> 255 256 257 Listen 80<br /> 258 Listen 8080<br /> 259 <br /> 260 NameVirtualHost 172.20.30.40:80<br /> 261 NameVirtualHost 172.20.30.40:8080<br /> 262 <br /> 263 <VirtualHost 172.20.30.40:80><br /> 264 <span class="indent"> 265 ServerName www.example.com<br /> 266 DocumentRoot /www/domain-80<br /> 267 </span> 268 </VirtualHost><br /> 269 <br /> 270 <VirtualHost 172.20.30.40:8080><br /> 271 <span class="indent"> 272 ServerName www.example.com<br /> 273 DocumentRoot /www/domain-8080<br /> 274 </span> 275 </VirtualHost><br /> 276 <br /> 277 <VirtualHost 172.20.30.40:80><br /> 278 <span class="indent"> 279 ServerName www.example.org<br /> 280 DocumentRoot /www/otherdomain-80<br /> 281 </span> 282 </VirtualHost><br /> 283 <br /> 284 <VirtualHost 172.20.30.40:8080><br /> 285 <span class="indent"> 286 ServerName www.example.org<br /> 287 DocumentRoot /www/otherdomain-8080<br /> 288 </span> 289 </VirtualHost> 290 </code></p></div> 291 292 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 293<div class="section"> 294<h2><a name="ip" id="ip">IP ベースのバーチャルホスティング</a></h2> 295 296 <p>サーバは <code>www.example.com</code> と <code>www.example.org</code> 297 にそれぞれ解決される、二つの IP アドレス (<code>172.20.30.40</code> と 298 <code>172.20.30.50</code>) があります。</p> 299 300 <div class="example"><h3>サーバの設定</h3><p><code> 301 302 303 Listen 80<br /> 304 <br /> 305 <VirtualHost 172.20.30.40><br /> 306 <span class="indent"> 307 DocumentRoot /www/example1<br /> 308 ServerName www.example.com<br /> 309 </span> 310 </VirtualHost><br /> 311 <br /> 312 <VirtualHost 172.20.30.50><br /> 313 <span class="indent"> 314 DocumentRoot /www/example2<br /> 315 ServerName www.example.org<br /> 316 </span> 317 </VirtualHost> 318 </code></p></div> 319 320 <p><code><VirtualHost></code> ディレクティブのどれでも 321 指定されていないアドレス (例えば <code>localhost</code>) は、 322 主サーバがあればそこに行きます。</p> 323 324 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 325<div class="section"> 326<h2><a name="ipport" id="ipport">ポートベースと IP ベースの混ざった 327 バーチャルホスト</a></h2> 328 329 <p>サーバマシンはそれぞれ <code>www.example.com</code> と 330 <code>www.example.org</code> にそれぞれ解決される、IP アドレスを二つ 331 (<code>172.20.30.40</code> と <code>172.20.30.50</code>) 持っています。 332 どちらもポート 80 と 8080 でホストを走らせます。</p> 333 334 <div class="example"><h3>サーバの設定</h3><p><code> 335 336 337 Listen 172.20.30.40:80<br /> 338 Listen 172.20.30.40:8080<br /> 339 Listen 172.20.30.50:80<br /> 340 Listen 172.20.30.50:8080<br /> 341 <br /> 342 <VirtualHost 172.20.30.40:80><br /> 343 <span class="indent"> 344 DocumentRoot /www/example1-80<br /> 345 ServerName www.example.com<br /> 346 </span> 347 </VirtualHost><br /> 348 <br /> 349 <VirtualHost 172.20.30.40:8080><br /> 350 <span class="indent"> 351 DocumentRoot /www/example1-8080<br /> 352 ServerName www.example.com<br /> 353 </span> 354 </VirtualHost><br /> 355 <br /> 356 <VirtualHost 172.20.30.50:80><br /> 357 <span class="indent"> 358 DocumentRoot /www/example2-80<br /> 359 ServerName www.example.org<br /> 360 </span> 361 </VirtualHost><br /> 362 <br /> 363 <VirtualHost 172.20.30.50:8080><br /> 364 <span class="indent"> 365 DocumentRoot /www/example2-8080<br /> 366 ServerName www.example.org<br /> 367 </span> 368 </VirtualHost> 369 </code></p></div> 370 371 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 372<div class="section"> 373<h2><a name="mixed" id="mixed">名前ベースと IP ベースを混ぜた 374 バーチャルホスト</a></h2> 375 376 <p>いくつかのマシンでは名前ベースの、その他では IP ベースのバーチャル 377 ホストをします。</p> 378 379 <div class="example"><h3>サーバの設定</h3><p><code> 380 381 382 Listen 80<br /> 383 <br /> 384 NameVirtualHost 172.20.30.40<br /> 385 <br /> 386 <VirtualHost 172.20.30.40><br /> 387 <span class="indent"> 388 DocumentRoot /www/example1<br /> 389 ServerName www.example.com<br /> 390 </span> 391 </VirtualHost><br /> 392 <br /> 393 <VirtualHost 172.20.30.40><br /> 394 <span class="indent"> 395 DocumentRoot /www/example2<br /> 396 ServerName www.example.org<br /> 397 </span> 398 </VirtualHost><br /> 399 <br /> 400 <VirtualHost 172.20.30.40><br /> 401 <span class="indent"> 402 DocumentRoot /www/example3<br /> 403 ServerName www.example3.net<br /> 404 </span> 405 </VirtualHost><br /> 406 <br /> 407 # IP-based<br /> 408 <VirtualHost 172.20.30.50><br /> 409 <span class="indent"> 410 DocumentRoot /www/example4<br /> 411 ServerName www.example4.edu<br /> 412 </span> 413 </VirtualHost><br /> 414 <br /> 415 <VirtualHost 172.20.30.60><br /> 416 <span class="indent"> 417 DocumentRoot /www/example5<br /> 418 ServerName www.example5.gov<br /> 419 </span> 420 </VirtualHost> 421 </code></p></div> 422 423 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 424<div class="section"> 425<h2><a name="proxy" id="proxy"><code>Virtual_host</code> と 426 mod_proxy を併用する</a></h2> 427 428 <p>次の例は、フロント側のバーチャルホストで他のマシンへプロクシします。 429 例では <code>192.168.111.2</code> のマシンではバーチャルホスト名は 430 同じ名前で設定されています。複数のホスト名を一台のマシンにプロクシする 431 場合は、<code class="directive"><a href="/mod/mod_proxy.html#proxypreservehost on">ProxyPreserveHost On</a></code> 432 ディレクティブを使って、希望のホスト名を渡せるようになります。 433 </p> 434 435 <div class="example"><p><code> 436 <VirtualHost *:*><br /> 437 ProxyPreserveHost On<br /> 438 ProxyPass / http://192.168.111.2/<br /> 439 ProxyPassReverse / http://192.168.111.2/<br /> 440 ServerName hostname.example.com<br /> 441 </VirtualHost> 442 </code></p></div> 443 444 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 445<div class="section"> 446<h2><a name="default" id="default"><code>_default_</code> のバーチャルホストを 447 使う</a></h2> 448 449 <h3><a name="defaultallports" id="defaultallports">すべてのポートに対する 450 <code>_default_</code> バーチャルホスト</a></h3> 451 452 <p>未指定の IP アドレスとポート、<em>つまり</em>他のバーチャルホストに 453 使われていないアドレスとポートの組み合わせ、への<em>すべての</em>リクエストを 454 受け取ります。</p> 455 456 <div class="example"><h3>サーバの設定</h3><p><code> 457 458 459 <VirtualHost _default_:*><br /> 460 <span class="indent"> 461 DocumentRoot /www/default<br /> 462 </span> 463 </VirtualHost> 464 </code></p></div> 465 466 <p>このようにワイルドカードのポートでデフォルトのバーチャルホストを 467 指定すると、主サーバにリクエストが行くのを防げます。</p> 468 469 <p>デフォルトのバーチャルホストは名前ベースのバーチャルホストに 470 使われているアドレスとポートの組に送られたリクエストを扱うことは 471 ありません。リクエストが不明な <code>Host:</code> ヘッダやその 472 ヘッダがなかったりする場合は基本名前ベースバーチャルホスト (その 473 アドレスとポートで設定ファイル中で最初のバーチャルホスト) により 474 扱われます。</p> 475 476 <p>どんなリクエストでも <code class="directive"><a href="/mod/mod_alias.html#aliasmatch">AliasMatch</a></code> 477 や <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> を使って 478 単一の情報ページ (やスクリプト) に書き換えることができます。</p> 479 480 481 <h3><a name="defaultdifferentports" id="defaultdifferentports">違うポートのための 482 <code>_default_</code> バーチャルホスト</a></h3> 483 484 <p>一つめの設定とほぼ同じですが、サーバは複数のポートを listen しており、 485 80 番ポートに対して二つめの <code>_default_</code> バーチャルホストを 486 設定したい場合です。</p> 487 488 <div class="example"><h3>サーバの設定</h3><p><code> 489 490 491 <VirtualHost _default_:80><br /> 492 <span class="indent"> 493 DocumentRoot /www/default80<br /> 494 # ...<br /> 495 </span> 496 </VirtualHost><br /> 497 <br /> 498 <VirtualHost _default_:*><br /> 499 <span class="indent"> 500 DocumentRoot /www/default<br /> 501 # ...<br /> 502 </span> 503 </VirtualHost> 504 </code></p></div> 505 506 <p>80 番ポートのデフォルトバーチャルホスト (ワイルドカードポートの 507 デフォルトバーチャルホストよりも前に書かれていなければ<em>なりません</em>) は 508 未指定の IP アドレスに送られたすべてのリクエストを扱います。 509 主サーバはリクエストを扱いません。</p> 510 511 512 <h3><a name="defaultoneport" id="defaultoneport">一つのポートに対してだけの 513 <code>_default_</code> バーチャルホスト</a></h3> 514 515 <p>80 番ポートにはデフォルトのバーチャルホストが必要で、他の 516 バーチャルホストはデフォルトが必要ない場合です。</p> 517 518 <div class="example"><h3>サーバの設定</h3><p><code> 519 520 521 <VirtualHost _default_:80><br /> 522 DocumentRoot /www/default<br /> 523 ...<br /> 524 </VirtualHost> 525 </code></p></div> 526 527 <p>80 番ポートへのアドレス未指定のリクエストはデフォルトのバーチャル 528 ホストから送られます。他の未指定のアドレスとポートへのリクエストは 529 主サーバから送られます。</p> 530 531 532 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 533<div class="section"> 534<h2><a name="migrate" id="migrate">名前ベースのバーチャルホストから IP ベースの 535 バーチャルホストに移行する</a></h2> 536 537 <p>ホスト名が名前 <code>www.example.org</code> のバーチャルホスト 538 (<a href="#name">名前ベース</a>の例の 2 番目の設定) が専用の IP アドレスを 539 得たとします。名前ベースのバーチャルホストの古い IP アドレスを 540 キャッシュしているネームサーバやプロキシのために移行期間中は両方の 541 バーチャルホストを提供したいとします。</p> 542 543 <p>答は簡単です。単に新しい IP アドレス (<code>172.20.30.50</code>) 544 を <code>VirtualHost</code> ディレクティブに追加することで 545 できます。</p> 546 547 <div class="example"><h3>サーバ設定</h3><p><code> 548 549 550 Listen 80<br /> 551 ServerName www.example.com<br /> 552 DocumentRoot /www/example1<br /> 553 <br /> 554 NameVirtualHost 172.20.30.40<br /> 555 <br /> 556 <VirtualHost 172.20.30.40 172.20.30.50><br /> 557 <span class="indent"> 558 DocumentRoot /www/example2<br /> 559 ServerName www.example.org<br /> 560 # ...<br /> 561 </span> 562 </VirtualHost><br /> 563 <br /> 564 <VirtualHost 172.20.30.40><br /> 565 <span class="indent"> 566 DocumentRoot /www/example3<br /> 567 ServerName www.example.net<br /> 568 ServerAlias *.example.net<br /> 569 # ...<br /> 570 </span> 571 </VirtualHost> 572 </code></p></div> 573 574 <p>このバーチャルホストは新しいアドレス (IP ベースのバーチャルホストとして) 575 と古いアドレス(名前ベースのバーチャルホストとして) の両方から 576 アクセスできます。</p> 577 578 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 579<div class="section"> 580<h2><a name="serverpath" id="serverpath"><code>ServerPath</code> ディレクティブを 581 使う</a></h2> 582 583 <p>名前ベースのバーチャルホストが二つあるサーバがあるとします。 584 正しいバーチャルホストを得るためにはクライアントは正しい 585 <code>Host:</code> ヘッダを送らなければなりません。 586 古い HTTP/1.0 はそのようなヘッダを送らないので、Apache はクライアントが 587 どのバーチャルホストを意図したのかさっぱりわかりません 588 (なので、主バーチャルホストでリクエストを扱います)。 589 可能な限りの下位互換性を得るため、名前ベースのバーチャルホストの 590 URL 接頭辞へのリンクの書かれたページを返す、 591 主バーチャルホストが作成されます。</p> 592 593 <div class="example"><h3>サーバの設定</h3><p><code> 594 595 596 NameVirtualHost 172.20.30.40<br /> 597 <br /> 598 <VirtualHost 172.20.30.40><br /> 599 <span class="indent"> 600 # primary vhost<br /> 601 DocumentRoot /www/subdomain<br /> 602 RewriteEngine On<br /> 603 RewriteRule ^/.* /www/subdomain/index.html<br /> 604 # ...<br /> 605 </span> 606 </VirtualHost><br /> 607 <br /> 608 <VirtualHost 172.20.30.40><br /> 609 DocumentRoot /www/subdomain/sub1<br /> 610 <span class="indent"> 611 ServerName www.sub1.domain.tld<br /> 612 ServerPath /sub1/<br /> 613 RewriteEngine On<br /> 614 RewriteRule ^(/sub1/.*) /www/subdomain$1<br /> 615 # ...<br /> 616 </span> 617 </VirtualHost><br /> 618 <br /> 619 <VirtualHost 172.20.30.40><br /> 620 <span class="indent"> 621 DocumentRoot /www/subdomain/sub2<br /> 622 ServerName www.sub2.domain.tld<br /> 623 ServerPath /sub2/<br /> 624 RewriteEngine On<br /> 625 RewriteRule ^(/sub2/.*) /www/subdomain$1<br /> 626 # ...<br /> 627 </span> 628 </VirtualHost> 629 </code></p></div> 630 631 <p><code class="directive"><a href="/mod/core.html#serverpath">ServerPath</a></code> ディレクティブの設定に 632 より、URL <code>http://www.sub1.domain.tld/sub1/</code> は 633 <em>常に</em> sub1-vhost により扱われます。URL 634 <code>http://www.sub1.domain.tld/</code> へのリクエストは 635 クライアントが正しい <code>Host:</code> ヘッダを送ったときにのみ 636 sub1-vhost から送られます。<code>Host:</code> ヘッダがなければ 637 クライアントは主ホストの情報ページを得ます。</p> 638 639 <p>一つ奇妙な動作をする点があることは覚えておいてください。 640 <code>http://www.sub2.domain.tld/sub1/</code> へのリクエストも 641 <code>Host:</code> ヘッダがなければ sub1-vhost により扱われます。</p> 642 643 <p>正しい <code>Host:</code> ヘッダを送ったクライアントはどちらの 644 URL、<em>つまり</em>接頭辞がある方も無い方も使えるように 645 <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> ディレクティブが 646 使われています。</p> 647 </div></div> 648<div class="bottomlang"> 649<p><span>翻訳済み言語: </span><a href="/en/vhosts/examples.html" hreflang="en" rel="alternate" title="English"> en </a> | 650<a href="/fr/vhosts/examples.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 651<a href="/ja/vhosts/examples.html" title="Japanese"> ja </a> | 652<a href="/ko/vhosts/examples.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 653<a href="/tr/vhosts/examples.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> 654</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> 655<script type="text/javascript"><!--//--><![CDATA[//><!-- 656var comments_shortname = 'httpd'; 657var comments_identifier = 'http://httpd.apache.org/docs/2.4/vhosts/examples.html'; 658(function(w, d) { 659 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 660 d.write('<div id="comments_thread"><\/div>'); 661 var s = d.createElement('script'); 662 s.type = 'text/javascript'; 663 s.async = true; 664 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 665 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 666 } 667 else { 668 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 669 } 670})(window, document); 671//--><!]]></script></div><div id="footer"> 672<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> 673<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[//><!-- 674if (typeof(prettyPrint) !== 'undefined') { 675 prettyPrint(); 676} 677//--><!]]></script> 678</body></html>