📄 name-based.html
字号:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="keywords" content="Apache, 中文, 手册, 中文版, 中文手册, 中文版手册, 参考手册, 中文参考手册, 金步国" />
<meta name="description" content="Apache 2.2 中文版参考手册" />
<meta name="author" content="金步国" />
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<title>基于主机名的虚拟主机 - Apache 2.2 中文版参考手册</title>
</head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p><p class="apache">Apache HTTP Server 版本2.2</p><img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path"><a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">文档</a> > <a href="../index.html">版本2.2</a> > <a href="./index.html">虚拟主机</a></div>
<div id="translation-info"> <a href="../translator_announcement.html#thanks">致谢</a> | <a href="../translator_announcement.html#announcement">译者声明</a> | 本篇译者:<a href="mailto:csfrank@citiz.net">金步国</a> | 本篇译稿最后更新:2006年1月18日 | <a href="../translator_announcement.html#last_new">获取最新版本</a></div>
<div id="page-content"><div id="preamble"><h1>基于主机名的虚拟主机</h1>
<p>本文档说明了如何使用基于域名的虚拟主机。</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="namevip" id="namevip">基于域名的虚拟主机和基于IP的虚拟主机比较</a></h2>
<p>基于IP的虚拟主机使用连接的IP地址来决定相应的虚拟主机。这样,你就需要为每个虚拟主机分配一个独立的IP地址。而基于域名的虚拟主机是根据客户端提交的HTTP头中标识主机名的部分决定的。使用这种技术,很多虚拟主机可以共享同一个IP地址。</p>
<p>基于域名的虚拟主机相对比较简单,因为你只需要配置你的DNS服务器将每个主机名映射到正确的IP地址,然后配置Apache HTTP服务器,令其辨识不同的主机名就可以了。基于域名的服务器也可以缓解IP地址不足的问题。所以,如果没有特殊原因使你必须使用基于IP的虚拟主机,您最好还是使用基于域名的虚拟主机。下列情况下,你可能会想要使用基于IP的虚拟主机:</p>
<ul>
<li>一些古董级的客户端与基于域名的虚拟主机不兼容。为了与基于域名的虚拟主机兼容,客户端必须发送"Host"头。HTTP/1.1规范中对此做了要求。而所有现在常见的仅支持HTTP/1.0的旧版本浏览器都以附加的方式实现了这个要求。如果你又想支持这些老浏览器,又想使用基于域名的虚拟主机。我们提供了一个技术方案,你可以在本文末尾看到它。</li>
<li>SSL协议先天特性决定了基于域名的虚拟主机无法成为SSL安全服务器。</li>
<li>一些操作系统和网络设备实现的带宽管理技术无法在多个主机共享一个IP的情况下区别它们。</li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">使用基于域名的虚拟主机</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="related">
<tr><th>相关模块</th><th>相关指令</th></tr>
<tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code></li><li><code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code></li><li><code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code></li><li><code class="directive"><a href="../mod/core.html#servername">ServerName</a></code></li><li><code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code></li><li><code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code></li></ul></td></tr>
</table>
<p>为了使用基于域名的虚拟主机,你必须指定服务器IP地址(和可能的端口)来使主机接受请求,这个可以用<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>指令来进行配置。如果服务器上所有的IP地址都会用到,你可以用"<code>*</code>"作为<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>的参数。如果你打算使用多端口(如运行SSL)你必须在参数中指定一个端口号,比如"<code>*:80</code>"。请注意,在<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>指令中指定IP地址并不会使服务器自动侦听那个IP地址。请参阅<a href="../bind.html">设置Apache使用的地址和端口</a>一章获取更多详情。另外,这里设定的IP地址必须对应服务器上的一个网络接口。</p>
<p>下一步就是为每个虚拟主机建立<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>段。<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>的参数与<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>的参数必须是一样的(比如说,一个IP地址或"<code>*</code>"代表的所有地址)。在每个<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>段中,至少要有一个<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>指令来指定伺服哪个主机和一个<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>指令来说明这个主机的内容位于文件系统的什么地方。</p>
<div class="note"><h3>取消中心主机(Mainhost)</h3>
<p>如果你想在现有的web服务器上增加虚拟主机,你必须也为现存的主机建造一个<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>定义块。这个虚拟主机中<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>和<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>所包含的内容应该与全局的<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>和<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>保持一致。还要把这个虚拟主机放在配置文件的最前面,来让它扮演默认主机的角色。</p>
</div>
<p>比如说,假设你正在为域名<code>www.domain.tld</code>提供服务,而你又想在同一个IP地址上增加一个名叫<code>www.otherdomain.tld</code>的虚拟主机,你只需在<code>httpd.conf</code>中加入以下内容:</p>
<div class="example"><p><code>
NameVirtualHost *:80<br />
<br />
<VirtualHost *:80><br />
<span class="indent">
ServerName www.domain.tld<br />
ServerAlias domain.tld *.domain.tld<br />
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -