examples.html.en revision ac082aefa89416cbdc9a1836eaf3bed9698201c8
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor This file is generated from xml source: DO NOT EDIT
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<title>VirtualHost Examples - Apache HTTP Server</title>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen<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" />
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen<script src="/style/scripts/prettify.js" type="text/javascript">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<link href="/images/favicon.ico" rel="shortcut icon" /></head>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Virtual Hosts</a></div><div id="page-content"><div id="preamble"><h1>VirtualHost Examples</h1>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<p><span>Available Languages: </span><a href="/en/vhosts/examples.html" title="English"> en </a> |
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<a href="/fr/vhosts/examples.html" hreflang="fr" rel="alternate" title="Fran�ais"> fr </a> |
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<a href="/ja/vhosts/examples.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<a href="/ko/vhosts/examples.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung<a href="/tr/vhosts/examples.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a></p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>This document attempts to answer the commonly-asked questions about
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor setting up <a href="index.html">virtual hosts</a>. These scenarios are those involving multiple
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor web sites running on a single server, via <a href="name-based.html">name-based</a> or <a href="ip-based.html">IP-based</a> virtual hosts.
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#purename">Running several name-based web
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#twoips">Name-based hosts on more than one
b71e5eae594d54e9e56dc20208c6a7fb52610e29rbowen<li><img alt="" src="/images/down.gif" /> <a href="#intraextra">Serving the same content on
c867dba1041640ecec7c8194d35a5b4ffce442earbowen different IP addresses (such as an internal and external
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#port">Running different sites on different
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#ip">IP-based virtual hosting</a></li>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#ipport">Mixed port-based and ip-based virtual
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#mixed">Mixed name-based and IP-based
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#proxy">Using <code>Virtual_host</code> and
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#default">Using <code>_default_</code>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#migrate">Migrating a name-based vhost to an
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#serverpath">Using the <code>ServerPath</code>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="purename" id="purename">Running several name-based web
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>Your server has a single IP address, and multiple aliases (CNAMES)
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor point to this machine in DNS. You want to run a web server for
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>www.example.com</code> and <code>www.example.org</code> on this
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor machine.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor host configurations on your Apache server does not magically
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor cause DNS entries to be created for those host names. You
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <em>must</em> have the names in DNS, resolving to your IP
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor address, or nobody else will be able to see your web site. You
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor can put entries in your <code>hosts</code> file for local
c867dba1041640ecec7c8194d35a5b4ffce442earbowen testing, but that will work only from the machine with those
c867dba1041640ecec7c8194d35a5b4ffce442earbowen# Ensure that Apache listens on port 80
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost *:80>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # Other directives here
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost *:80>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # Other directives here
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>The asterisks match all addresses, so the main server serves no
c867dba1041640ecec7c8194d35a5b4ffce442earbowen requests. Due to the fact that the virtual host with
c867dba1041640ecec7c8194d35a5b4ffce442earbowen in the configuration file, it has the highest priority and can be seen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen as the <cite>default</cite> or <cite>primary</cite> server. That means
c867dba1041640ecec7c8194d35a5b4ffce442earbowen that if a request is received that does not match one of the specified
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code>ServerName</code> directives, it will be served by this first
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>You can, if you wish, replace <code>*</code> with the actual
c867dba1041640ecec7c8194d35a5b4ffce442earbowen IP address of the system, when you don't care to discriminate based
c867dba1041640ecec7c8194d35a5b4ffce442earbowen on the IP address or port.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>However, it is additionally useful to use <code>*</code>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen on systems where the IP address is not predictable - for
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor example if you have a dynamic IP address with your ISP, and
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor you are using some variety of dynamic DNS solution. Since
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>*</code> matches any IP address, this configuration
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor would work without changes whenever your IP address
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor changes.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>The above configuration is what you will want to use in almost
c867dba1041640ecec7c8194d35a5b4ffce442earbowen all name-based virtual hosting situations. The only thing that this
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor configuration will not work for, in fact, is when you are serving
fed47023e9be04c612b5f6d4a5ee2b8e7c587181rbowen different content based on differing IP addresses or ports.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd<h2><a name="twoips" id="twoips">Name-based hosts on more than one
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd <p>Any of the techniques discussed here can be extended to any
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd number of IP addresses.</p>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd <p>The server has two IP addresses. On one (<code>172.20.30.40</code>), we
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd will serve the "main" server, <code>server.example.com</code> and on the
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd other (<code>172.20.30.50</code>), we will serve two or more virtual hosts.</p>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd# This is the "main" server running on 172.20.30.40
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd<VirtualHost 172.20.30.50>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd # Other directives here ...
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.50>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor # Other directives here ...
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>Any request to an address other than <code>172.20.30.50</code> will be
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor served from the main server. A request to <code>172.20.30.50</code> with an
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor unknown hostname, or no <code>Host:</code> header, will be served from
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="intraextra" id="intraextra">Serving the same content on
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor different IP addresses (such as an internal and external
fed47023e9be04c612b5f6d4a5ee2b8e7c587181rbowen <p>The server machine has two IP addresses (<code>192.168.1.1</code>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor and <code>172.20.30.40</code>). The machine is sitting between an
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor internal (intranet) network and an external (internet) network. Outside
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor of the network, the name <code>server.example.com</code> resolves to
c867dba1041640ecec7c8194d35a5b4ffce442earbowen the external address (<code>172.20.30.40</code>), but inside the
c867dba1041640ecec7c8194d35a5b4ffce442earbowen network, that same name resolves to the internal address
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>The server can be made to respond to internal and external requests
c867dba1041640ecec7c8194d35a5b4ffce442earbowen with the same content, with just one <code>VirtualHost</code>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen section.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost 192.168.1.1 172.20.30.40>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerAlias server
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Now requests from both networks will be served from the same
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor network, one can just use the name <code>server</code> rather
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor than the fully qualified host name
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Note also that, in the above example, you can replace the list
c867dba1041640ecec7c8194d35a5b4ffce442earbowen of IP addresses with <code>*</code>, which will cause the server to
c867dba1041640ecec7c8194d35a5b4ffce442earbowen respond the same on all addresses.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<h2><a name="port" id="port">Running different sites on different
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>You have multiple domains going to the same IP and also want to
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor serve multiple ports. The example below illustrates that the name-matching
c867dba1041640ecec7c8194d35a5b4ffce442earbowen takes place after the best matching IP address and port combination
c867dba1041640ecec7c8194d35a5b4ffce442earbowen is determined.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40:80>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40:8080>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40:80>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40:8080>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="ip" id="ip">IP-based virtual hosting</a></h2>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>The server has two IP addresses (<code>172.20.30.40</code> and
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>172.20.30.50</code>) which resolve to the names
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>www.example.com</code> and <code>www.example.org</code>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor respectively.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.50>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>Requests for any address not specified in one of the
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>localhost</code>, for example) will go to the main server, if
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor there is one.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="ipport" id="ipport">Mixed port-based and ip-based virtual
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>The server machine has two IP addresses (<code>172.20.30.40</code> and
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>172.20.30.50</code>) which resolve to the names
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>www.example.com</code> and <code>www.example.org</code>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor respectively. In each case, we want to run hosts on ports 80 and
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalicListen 172.20.30.40:80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 172.20.30.40:8080
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 172.20.30.50:80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 172.20.30.50:8080
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost 172.20.30.40:80>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic<VirtualHost 172.20.30.40:8080>
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost 172.20.30.50:80>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost 172.20.30.50:8080>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<h2><a name="mixed" id="mixed">Mixed name-based and IP-based
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Any address mentioned in the argument to a virtualhost that never
c867dba1041640ecec7c8194d35a5b4ffce442earbowen appears in another virtual host is a strictly IP-based virtual host.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost 172.20.30.40>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40>
53cf0034f617fdca55a345580e13afd88000e9ccjim</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40>
2b6565aedca9e9c10691b12fd2f3689bf4c85bc7jim</VirtualHost>
2b6565aedca9e9c10691b12fd2f3689bf4c85bc7jim<VirtualHost 172.20.30.50>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.60>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<h2><a name="proxy" id="proxy">Using <code>Virtual_host</code> and
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>The following example allows a front-end machine to proxy a
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor virtual host through to a server running on another machine. In the
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic example, a virtual host of the same name is configured on a machine
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic at <code>192.168.111.2</code>. The <code class="directive"><a href="/mod/mod_proxy.html#proxypreservehost on">ProxyPreserveHost On</a></code> directive is
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic used so that the desired hostname is passed through, in case we are
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic proxying multiple hostnames to a single machine.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost *:*>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ProxyPreserveHost On
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ProxyPassReverse / http://192.168.111.2/
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="default" id="default">Using <code>_default_</code>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <h3><a name="defaultallports" id="defaultallports"><code>_default_</code> vhosts
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Catching <em>every</em> request to any unspecified IP address and
c867dba1041640ecec7c8194d35a5b4ffce442earbowen port, <em>i.e.</em>, an address/port combination that is not used for
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor any other virtual host.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost _default_:*>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Using such a default vhost with a wildcard port effectively prevents
c867dba1041640ecec7c8194d35a5b4ffce442earbowen any request going to the main server.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>A default vhost never serves a request that was sent to an
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor address/port that is used for name-based vhosts. If the request
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor contained an unknown or no <code>Host:</code> header it is always
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor served from the primary name-based vhost (the vhost for that
c867dba1041640ecec7c8194d35a5b4ffce442earbowen address/port appearing first in the configuration file).</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>You can use <code class="directive"><a href="/mod/mod_alias.html#aliasmatch">AliasMatch</a></code> or
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> to rewrite any
c867dba1041640ecec7c8194d35a5b4ffce442earbowen request to a single information page (or script).</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <h3><a name="defaultdifferentports" id="defaultdifferentports"><code>_default_</code> vhosts
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Same as setup 1, but the server listens on several ports and we want
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor to use a second <code>_default_</code> vhost for port 80.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost _default_:80>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost _default_:*>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>The default vhost for port 80 (which <em>must</em> appear before any
c867dba1041640ecec7c8194d35a5b4ffce442earbowen default vhost with a wildcard port) catches all requests that were sent
c867dba1041640ecec7c8194d35a5b4ffce442earbowen to an unspecified IP address. The main server is never used to serve a
c867dba1041640ecec7c8194d35a5b4ffce442earbowen request.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <h3><a name="defaultoneport" id="defaultoneport"><code>_default_</code> vhosts
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>We want to have a default vhost for port 80, but no other default
c867dba1041640ecec7c8194d35a5b4ffce442earbowen vhosts.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost _default_:80>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>A request to an unspecified address on port 80 is served from the
c867dba1041640ecec7c8194d35a5b4ffce442earbowen default vhost. Any other request to an unspecified address and port is
c867dba1041640ecec7c8194d35a5b4ffce442earbowen served from the main server.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Any use of <code>*</code> in a virtual host declaration will have
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<h2><a name="migrate" id="migrate">Migrating a name-based vhost to an
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>The name-based vhost with the hostname
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code>www.example.org</code> (from our <a href="#name">name-based</a> example, setup 2) should get its own IP
c867dba1041640ecec7c8194d35a5b4ffce442earbowen address. To avoid problems with name servers or proxies who cached the
c867dba1041640ecec7c8194d35a5b4ffce442earbowen old IP address for the name-based vhost we want to provide both
c867dba1041640ecec7c8194d35a5b4ffce442earbowen variants during a migration phase.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor The solution is easy, because we can simply add the new IP address
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor (<code>172.20.30.50</code>) to the <code>VirtualHost</code>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor directive.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost 172.20.30.40 172.20.30.50>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</VirtualHost>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>The vhost can now be accessed through the new address (as an
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor IP-based vhost) and through the old address (as a name-based
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor vhost).</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="serverpath" id="serverpath">Using the <code>ServerPath</code>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>We have a server with two name-based vhosts. In order to match the
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor correct virtual host a client must send the correct <code>Host:</code>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor header. Old HTTP/1.0 clients do not send such a header and Apache has
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor no clue what vhost the client tried to reach (and serves the request
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor from the primary vhost). To provide as much backward compatibility as
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor possible we create a primary vhost which returns a single page
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor containing links with an URL prefix to the name-based virtual
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<VirtualHost 172.20.30.40>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor # primary vhost
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor RewriteEngine On
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost 172.20.30.40>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerPath /sub1/
c867dba1041640ecec7c8194d35a5b4ffce442earbowen RewriteEngine On
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<VirtualHost 172.20.30.40>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerPath /sub2/
c867dba1041640ecec7c8194d35a5b4ffce442earbowen RewriteEngine On
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</VirtualHost>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Due to the <code class="directive"><a href="/mod/core.html#serverpath">ServerPath</a></code>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen directive a request to the URL
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code>http://www.sub1.domain.tld/sub1/</code> is <em>always</em> served
c867dba1041640ecec7c8194d35a5b4ffce442earbowen from the sub1-vhost.<br /> A request to the URL
c867dba1041640ecec7c8194d35a5b4ffce442earbowen served from the sub1-vhost if the client sent a correct
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code>Host:</code> header. If no <code>Host:</code> header is sent the
c867dba1041640ecec7c8194d35a5b4ffce442earbowen client gets the information page from the primary host.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Please note that there is one oddity: A request to
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code>http://www.sub2.domain.tld/sub1/</code> is also served from the
c867dba1041640ecec7c8194d35a5b4ffce442earbowen sub1-vhost if the client sent no <code>Host:</code> header.</p>
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf <p>The <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> directives
c867dba1041640ecec7c8194d35a5b4ffce442earbowen are used to make sure that a client which sent a correct
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code>Host:</code> header can use both URL variants, <em>i.e.</em>,
c867dba1041640ecec7c8194d35a5b4ffce442earbowen with or without URL prefix.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<p><span>Available Languages: </span><a href="/en/vhosts/examples.html" title="English"> en </a> |
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<a href="/fr/vhosts/examples.html" hreflang="fr" rel="alternate" title="Fran�ais"> fr </a> |
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<a href="/ja/vhosts/examples.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<a href="/ko/vhosts/examples.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<a href="/tr/vhosts/examples.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a></p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</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">Comments</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>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<script type="text/javascript"><!--//--><![CDATA[//><!--
c867dba1041640ecec7c8194d35a5b4ffce442earbowenvar comments_shortname = 'httpd';
c867dba1041640ecec7c8194d35a5b4ffce442earbowenvar comments_identifier = 'http://httpd.apache.org/docs/trunk/vhosts/examples.html';
c867dba1041640ecec7c8194d35a5b4ffce442earbowen(function(w, d) {
c867dba1041640ecec7c8194d35a5b4ffce442earbowen if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf d.write('<div id="comments_thread"><\/div>');
c867dba1041640ecec7c8194d35a5b4ffce442earbowen var s = d.createElement('script');
c867dba1041640ecec7c8194d35a5b4ffce442earbowen s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
c867dba1041640ecec7c8194d35a5b4ffce442earbowen d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
c867dba1041640ecec7c8194d35a5b4ffce442earbowen})(window, document);
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<p class="apache">Copyright 2012 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
c867dba1041640ecec7c8194d35a5b4ffce442earbowenif (typeof(prettyPrint) !== 'undefined') {
c867dba1041640ecec7c8194d35a5b4ffce442earbowen prettyPrint();