Apache 2.0手册中文版翻译项目 [本文译者: forehead * ]

项目说明 | 项目进度 | 项目讨论区 | Apache手册中文版

 


mod_vhost_alias - Apache HTTP服务器
<-
Apache主站 > HTTP服务器 > 文档 > 2.0版本 > 模块索引

Apache模块 mod_vhost_alias

说明:提供大容量虚拟主机的动态配置
状态:Extension
模块名:vhost_alias_module
源文件:mod_vhost_alias.c

概要

本模块通过将 HTTP 请求中的 IP 地址和/或 Host: 头内容转换为所要提供服务的文件的路径名称来创建动态的虚拟主机配置。这样的做法,使得应用大量的配置相近的虚拟主机变得更为容易。

Note

如果 mod_alias 或者 mod_userdir 被用来转换 URIs 为文件名,那么这两个将重载 mod_vhost_alias 的设定。例如,下面的配置将在任何情况下把 /cgi-bin/script.pl 映射为 /usr/local/apache2/cgi-bin/script.pl:

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
VirtualScriptAlias /never/found/%0/cgi-bin/

指令索引

主题

参见

top

目录名称的替换

本模块中的所有指令都将字符串替换为路径名。被替换的字符串(以后称为名称: name )或者是服务器名字(见 UseCanonicalName指令,以查阅具体如何决策)或者是“点数字”格式的虚拟主机的 IP 地址。替换操作使用了printf ,藉此提供各种转换格式:

%% 插入一个 %
%p 插入虚拟主机的端口号
%N.M 插入名称(或者名称的一部分)

NM 被用来指定名称(name)的子字符串。N 为名称中用小数点分隔的某一个部分,而 M 为被选中的 N 中的字符串。M 是可选的,如果不写 M 的话默认为 0 ;小数点当且仅当 M 存在时必须书写。替换操作如下:

0 整个名称
1 第一部分
2 第二部分
-1 最后一个部分
-2 倒数第二个部分
2+ 第二个开始到最后的所有各个部分
-2+ 倒数第二个以及之前的所有各个部分
1+ and -1+ 等同于 0

如果 N 或者 M 大于存在的部分个数,则简单的用下划线来替换。

top

例子

对于一个简单的基于名称的虚拟主机配置来说,在你的配置文件中可能会用下面的指令:

UseCanonicalName Off
VirtualDocumentRoot /usr/local/apache/vhosts/%0

那么请求http://www.example.com/directory/file.html 的操作将会如期的返回文件/usr/local/apache/vhosts/www.example.com/directory/file.html

对于拥有为数众多的虚拟主机的情况而言,减少 vhosts 目录大小的一个好办法就是重新组织。为此你可以使用下面的配置:

UseCanonicalName Off
VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2

那么来自 http://www.domain.example.com/directory/file.html 的请求将会如期的返回文件 /usr/local/apache/vhosts/example.com/d/o/m/domain/directory/file.html

进一步的分割可以用名称末尾的字符来索引,例如:

VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2

该例返回文件 /usr/local/apache/vhosts/example.com/n/i/a/domain/directory/file.html

也可以这样使用:

VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+

该例返回文件 /usr/local/apache/vhosts/example.com/d/o/m/ain/directory/file.html

对于基于 IP 地址的虚拟主机,可以这样配置:

UseCanonicalName DNS
VirtualDocumentRootIP /usr/local/apache/vhosts/%1/%2/%3/%4/docs
VirtualScriptAliasIP /usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin

来自 http://www.domain.example.com/directory/file.html 的请求将会如期的返回文件 /usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html ,这里假设 www.domain.example.com 的 IP 地址为 10.20.30.40 。 来自 http://www.domain.example.com/cgi-bin/script.pl 的请求将会执行程序 /usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl

如果你希望在 VirtualDocumentRoot 指令中包含字符 . ,但这又和 % 指令会产生冲突,可以这样解决:

VirtualDocumentRoot /usr/local/apache/vhosts/%2.0.%3.0

来自 http://www.domain.example.com/directory/file.html 的请求将会如期的返回文件 /usr/local/apache/vhosts/domain.example/directory/file.html

指令 LogFormat%V%A 在和本模块的关联中起了一定作用。

top

VirtualDocumentRoot 指令

说明:对于给定的虚拟主机动态配置根文档目录
语法:VirtualDocumentRoot 包含替换操作格式符的目录名称|none
默认值:VirtualDocumentRoot none
上下文:服务器配置, 虚拟主机
状态:Extension
模块:mod_vhost_alias

指令 VirtualDocumentRoot 使 Apache 通过虚拟主机的域名找到相应的文档。扩展 包含替换操作格式符的目录名称 所得到的目录将会作为虚拟主机的根目录,这和指令 DocumentRoot 的参数是一样的。 如果 包含替换操作格式符的目录名称none ,那么 VirtualDocumentRoot 将被关闭。 该指令不能和 VirtualDocumentRootIP 指令在同一语境中使用。

top

VirtualDocumentRootIP 指令

说明:对于给定的虚拟主机动态配置根文档目录
语法:VirtualDocumentRootIP 包含替换操作格式符的目录名称|none
默认值:VirtualDocumentRootIP none
上下文:服务器配置, 虚拟主机
状态:Extension
模块:mod_vhost_alias

指令 VirtualDocumentRootIP 和指令VirtualDocumentRoot相似,只是替换操作时用的不是虚拟主机域名,而是 IP 地址。

top

VirtualScriptAlias 指令

说明:对于给定的虚拟主机动态配置 CGI 目录
语法:VirtualScriptAlias 包含替换操作格式符的目录名称|none
默认值:VirtualScriptAlias none
上下文:服务器配置, 虚拟主机
状态:Extension
模块:mod_vhost_alias

指令 VirtualScriptAlias 使 Apache 确定何处存放 CGI 脚本,这和指令 VirtualDocumentRoot 的做法是一样的。它匹配请求中的以 /cgi-bin/ 起始的 URIs ,更像指令 ScriptAlias/cgi-bin/ 所做的。

top

VirtualScriptAliasIP 指令

说明:对于给定的虚拟主机动态配置 CGI 目录
语法:VirtualScriptAliasIP 包含替换操作格式符的目录名称|none
默认值:VirtualScriptAliasIP none
上下文:服务器配置, 虚拟主机
状态:Extension
模块:mod_vhost_alias

指令 VirtualScriptAliasIP 和指令VirtualScriptAlias 相像,只是替换操作时用的不是虚拟主机域名,而是 IP 地址。

 


项目维护者: kajaa [本文译者: forehead * ]

项目说明 | 项目进度 | 项目讨论区 | Apache手册中文版