examples.html.en revision ac082aefa89416cbdc9a1836eaf3bed9698201c8
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<?xml version="1.0" encoding="ISO-8859-1"?>
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 -->
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">
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen</script>
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<link href="/images/favicon.ico" rel="shortcut icon" /></head>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<body id="manual-page"><div id="page-header">
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<p class="apache">Apache HTTP Server Version 2.5</p>
3f08db06526d6901aa08c110b5bc7dde6bc39905nd<img alt="" src="/images/feather.gif" /></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div id="path">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Virtual Hosts</a></div><div id="page-content"><div id="preamble"><h1>VirtualHost Examples</h1>
3f08db06526d6901aa08c110b5bc7dde6bc39905nd<div class="toplang">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<p><span>Available Languages: </span><a href="/en/vhosts/examples.html" title="English">&nbsp;en&nbsp;</a> |
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<a href="/fr/vhosts/examples.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a> |
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<a href="/ja/vhosts/examples.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<a href="/ko/vhosts/examples.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung<a href="/tr/vhosts/examples.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</div>
645cf915f6bc22be17750bc5bb34ade8de6744dfnd
645cf915f6bc22be17750bc5bb34ade8de6744dfnd
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 </p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
c867dba1041640ecec7c8194d35a5b4ffce442earbowen</div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#purename">Running several name-based web
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor sites on a single IP address.</a></li>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#twoips">Name-based hosts on more than one
c867dba1041640ecec7c8194d35a5b4ffce442earbowen IP address.</a></li>
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 address).</a></li>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#port">Running different sites on different
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ports.</a></li>
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 hosts</a></li>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#mixed">Mixed name-based and IP-based
c867dba1041640ecec7c8194d35a5b4ffce442earbowen vhosts</a></li>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#proxy">Using <code>Virtual_host</code> and
c867dba1041640ecec7c8194d35a5b4ffce442earbowen mod_proxy together</a></li>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#default">Using <code>_default_</code>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen vhosts</a></li>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#migrate">Migrating a name-based vhost to an
c867dba1041640ecec7c8194d35a5b4ffce442earbowen IP-based vhost</a></li>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<li><img alt="" src="/images/down.gif" /> <a href="#serverpath">Using the <code>ServerPath</code>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen directive</a></li>
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<div class="section">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="purename" id="purename">Running several name-based web
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor sites on a single IP address.</a></h2>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <div class="note"><h3>Note</h3><p>Creating virtual
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
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>hosts</code> entries.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <pre class="prettyprint lang-config">
c867dba1041640ecec7c8194d35a5b4ffce442earbowen# Ensure that Apache listens on port 80
c867dba1041640ecec7c8194d35a5b4ffce442earbowenListen 80
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost *:80&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen DocumentRoot /www/example1
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerName www.example.com
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # Other directives here
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost *:80&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen DocumentRoot /www/example2
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerName www.example.org
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # Other directives here
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </pre>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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 <code>ServerName www.example.com</code> is first
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 <code>VirtualHost</code>.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <div class="note">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <h3>Note</h3>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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
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 </div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="section">
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd<h2><a name="twoips" id="twoips">Name-based hosts on more than one
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd IP address.</a></h2>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd <div class="note">
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd <h3>Note</h3>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd <p>Any of the techniques discussed here can be extended to any
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd number of IP addresses.</p>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd </div>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd
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
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd <pre class="prettyprint lang-config">
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9ndListen 80
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd# This is the "main" server running on 172.20.30.40
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9ndServerName server.example.com
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9ndDocumentRoot /www/mainserver
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd&lt;VirtualHost 172.20.30.50&gt;
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd DocumentRoot /www/example1
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd ServerName www.example.com
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd # Other directives here ...
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd&lt;/VirtualHost&gt;
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.50&gt;
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd DocumentRoot /www/example2
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd ServerName www.example.org
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor # Other directives here ...
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd&lt;/VirtualHost&gt;
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd </pre>
16055ce2030d5a9ab3b1797dfe4ba2c1177a6af9nd
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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 <code>www.example.com</code>.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="section">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="intraextra" id="intraextra">Serving the same content on
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor different IP addresses (such as an internal and external
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor address).</a></h2>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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 (<code>192.168.1.1</code>).</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <pre class="prettyprint lang-config">
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost 192.168.1.1 172.20.30.40&gt;
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf DocumentRoot /www/server1
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName server.example.com
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerAlias server
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </pre>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Now requests from both networks will be served from the same
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code>VirtualHost</code>.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <div class="note">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <h3>Note:</h3><p>On the internal
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor network, one can just use the name <code>server</code> rather
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor than the fully qualified host name
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <code>server.example.com</code>.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<div class="section">
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<h2><a name="port" id="port">Running different sites on different
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ports.</a></h2>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <pre class="prettyprint lang-config">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 8080
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40:80&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.com
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/domain-80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40:8080&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.com
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/domain-8080
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40:80&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.org
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/otherdomain-80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40:8080&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.org
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/otherdomain-8080
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </pre>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="section">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="ip" id="ip">IP-based virtual hosting</a></h2>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <pre class="prettyprint lang-config">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/example1
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.com
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.50&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/example2
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.org
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </pre>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <p>Requests for any address not specified in one of the
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>&lt;VirtualHost&gt;</code> directives (such as
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <code>localhost</code>, for example) will go to the main server, if
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor there is one.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="section">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="ipport" id="ipport">Mixed port-based and ip-based virtual
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor hosts</a></h2>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor 8080.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <pre class="prettyprint lang-config">
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalicListen 172.20.30.40:80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 172.20.30.40:8080
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 172.20.30.50:80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 172.20.30.50:8080
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost 172.20.30.40:80&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen DocumentRoot /www/example1-80
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerName www.example.com
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic&lt;VirtualHost 172.20.30.40:8080&gt;
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic DocumentRoot /www/example1-8080
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic ServerName www.example.com
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf&lt;/VirtualHost&gt;
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost 172.20.30.50:80&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen DocumentRoot /www/example2-80
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.org
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost 172.20.30.50:8080&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/example2-8080
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.org
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </pre>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<div class="section">
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<h2><a name="mixed" id="mixed">Mixed name-based and IP-based
c867dba1041640ecec7c8194d35a5b4ffce442earbowen vhosts</a></h2>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <pre class="prettyprint lang-config">
c867dba1041640ecec7c8194d35a5b4ffce442earbowenListen 80
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost 172.20.30.40&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/example1
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.com
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/example2
53cf0034f617fdca55a345580e13afd88000e9ccjim ServerName www.example.org
53cf0034f617fdca55a345580e13afd88000e9ccjim&lt;/VirtualHost&gt;
53cf0034f617fdca55a345580e13afd88000e9ccjim
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/example3
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.net
2b6565aedca9e9c10691b12fd2f3689bf4c85bc7jim&lt;/VirtualHost&gt;
2b6565aedca9e9c10691b12fd2f3689bf4c85bc7jim
2b6565aedca9e9c10691b12fd2f3689bf4c85bc7jim# IP-based
2b6565aedca9e9c10691b12fd2f3689bf4c85bc7jim&lt;VirtualHost 172.20.30.50&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/example4
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.edu
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.60&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen DocumentRoot /www/example5
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerName www.example.gov
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </pre>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="section">
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<h2><a name="proxy" id="proxy">Using <code>Virtual_host</code> and
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor mod_proxy together</a></h2>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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>
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic <pre class="prettyprint lang-config">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost *:*&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ProxyPreserveHost On
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ProxyPass / http://192.168.111.2/
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ProxyPassReverse / http://192.168.111.2/
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName hostname.example.com
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic&lt;/VirtualHost&gt;
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic </pre>
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic
8e9c6d6438af1ccb46adaa60d34caa3ac98f3851igalic
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="section">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="default" id="default">Using <code>_default_</code>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen vhosts</a></h2>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <h3><a name="defaultallports" id="defaultallports"><code>_default_</code> vhosts
c867dba1041640ecec7c8194d35a5b4ffce442earbowen for all ports</a></h3>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <pre class="prettyprint lang-config">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost _default_:*&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen DocumentRoot /www/default
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </pre>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Using such a default vhost with a wildcard port effectively prevents
c867dba1041640ecec7c8194d35a5b4ffce442earbowen any request going to the main server.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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
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
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <h3><a name="defaultdifferentports" id="defaultdifferentports"><code>_default_</code> vhosts
c867dba1041640ecec7c8194d35a5b4ffce442earbowen for different ports</a></h3>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <pre class="prettyprint lang-config">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost _default_:80&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/default80
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # ...
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost _default_:*&gt;
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf DocumentRoot /www/default
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # ...
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </pre>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <h3><a name="defaultoneport" id="defaultoneport"><code>_default_</code> vhosts
c867dba1041640ecec7c8194d35a5b4ffce442earbowen for one port</a></h3>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>We want to have a default vhost for port 80, but no other default
c867dba1041640ecec7c8194d35a5b4ffce442earbowen vhosts.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <pre class="prettyprint lang-config">
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost _default_:80&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowenDocumentRoot /www/default
c867dba1041640ecec7c8194d35a5b4ffce442earbowen...
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </pre>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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
c867dba1041640ecec7c8194d35a5b4ffce442earbowen <p>Any use of <code>*</code> in a virtual host declaration will have
c867dba1041640ecec7c8194d35a5b4ffce442earbowen higher precedence than <code>_default_</code>.</p>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<div class="section">
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<h2><a name="migrate" id="migrate">Migrating a name-based vhost to an
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor IP-based vhost</a></h2>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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>
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf <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>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <pre class="prettyprint lang-config">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzorListen 80
c867dba1041640ecec7c8194d35a5b4ffce442earbowenServerName www.example.com
c867dba1041640ecec7c8194d35a5b4ffce442earbowenDocumentRoot /www/example1
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost 172.20.30.40 172.20.30.50&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen DocumentRoot /www/example2
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor ServerName www.example.org
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor # ...
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/example3
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerName www.example.net
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerAlias *.example.net
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor # ...
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;/VirtualHost&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </pre>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<div class="section">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor<h2><a name="serverpath" id="serverpath">Using the <code>ServerPath</code>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor directive</a></h2>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
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 hosts.</p>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor <pre class="prettyprint lang-config">
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor&lt;VirtualHost 172.20.30.40&gt;
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor # primary vhost
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor DocumentRoot /www/subdomain
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor RewriteEngine On
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor RewriteRule . /www/subdomain/index.html
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # ...
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost 172.20.30.40&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowenDocumentRoot /www/subdomain/sub1
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerName www.sub1.domain.tld
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerPath /sub1/
c867dba1041640ecec7c8194d35a5b4ffce442earbowen RewriteEngine On
c867dba1041640ecec7c8194d35a5b4ffce442earbowen RewriteRule ^(/sub1/.*) /www/subdomain$1
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # ...
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;VirtualHost 172.20.30.40&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen DocumentRoot /www/subdomain/sub2
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerName www.sub2.domain.tld
c867dba1041640ecec7c8194d35a5b4ffce442earbowen ServerPath /sub2/
c867dba1041640ecec7c8194d35a5b4ffce442earbowen RewriteEngine On
c867dba1041640ecec7c8194d35a5b4ffce442earbowen RewriteRule ^(/sub2/.*) /www/subdomain$1
c867dba1041640ecec7c8194d35a5b4ffce442earbowen # ...
c867dba1041640ecec7c8194d35a5b4ffce442earbowen&lt;/VirtualHost&gt;
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </pre>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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 <code>http://www.sub1.domain.tld/</code> is only
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
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>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen
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
c867dba1041640ecec7c8194d35a5b4ffce442earbowen </div></div>
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<div class="bottomlang">
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<p><span>Available Languages: </span><a href="/en/vhosts/examples.html" title="English">&nbsp;en&nbsp;</a> |
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<a href="/fr/vhosts/examples.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a> |
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<a href="/ja/vhosts/examples.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<a href="/ko/vhosts/examples.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
c867dba1041640ecec7c8194d35a5b4ffce442earbowen<a href="/tr/vhosts/examples.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</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&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>
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.type = 'text/javascript';
c867dba1041640ecec7c8194d35a5b4ffce442earbowen s.async = true;
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 }
c867dba1041640ecec7c8194d35a5b4ffce442earbowen else {
c867dba1041640ecec7c8194d35a5b4ffce442earbowen d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
c867dba1041640ecec7c8194d35a5b4ffce442earbowen }
c867dba1041640ecec7c8194d35a5b4ffce442earbowen})(window, document);
c867dba1041640ecec7c8194d35a5b4ffce442earbowen//--><!]]></script></div><div id="footer">
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();
c867dba1041640ecec7c8194d35a5b4ffce442earbowen}
c867dba1041640ecec7c8194d35a5b4ffce442earbowen//--><!]]></script>
dc3a272f8afcbc137adcfee4c3aa052d2bdf4df7gryzor</body></html>