<-
Apache HTTP 服务器 2.4 > Apache模块mod_vhost_alias

Apache模块mod_vhost_alias

描述:提供动态配置的大规模虚拟主机
状态:延期
模块标识符:vhost_alias_module
源文件:mod_vhost_alias.c

摘要

该模块通过允许IP地址和/或Host:HTTP请求的标头用作路径名的一部分来确定要服务的文件,来创建动态配置的虚拟主机。这样可以轻松使用大量具有类似配置的虚拟主机。

注意

如果将mod_aliasmod_userdir用于将URI转换为文件名,则它们将覆盖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/"
支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

目录名称插值

此模块中的所有指令都将字符串插入到路径名中。插值字符串(以下称为“名称”)可以是服务器名称(UseCanonicalName 有关如何确定此名称的详细信息,请参阅指令)或服务器上虚拟主机的IP(以点分四进制格式)。内插由说明符控制,这些说明符受printf多种格式影响:

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

NM用于指定名称的子字符串。N从名称的点分隔的部分中M 选择,并在N所选内容中选择字符。 M是可选的,如果不存在则默认为零;当且仅当存在时,点必须M 存在。解释如下:

0 全名
1 第一部分
2 第二部分
-1 最后一部分
-2 倒数第二部分
2+ 第二部分和所有后续部分
-2+ 倒数第二个及所有先前的部分
1+-1+ 与...相同 0

如果NM大于可用的零件数,则会插入单个下划线。

最佳

例子

对于基于名称的简单虚拟主机,可以在服务器配置文件中使用以下指令:

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

用户最常见的请求是能够将多个域指向多个文档根目录,而不必担心所请求的主机名的长度或部分数量。如果请求的主机名sub.www.domain.example.com 不是www.domain.example.com,则使用%3 +将导致文档根目录/usr/local/apache/vhosts/domain.example.com/...代替预期的example.com目录。在这种情况下,使用组合%-2.0.%-1.0总是有益的,例如,example.com无论附加到主机名的子域数量如何,总会产生域名和tld 。这样,就可以进行配置,将所有第一,第二或第三级子域定向到同一目录:

VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"

在上面的示例中,www.example.com以及www.sub.example.comexample.com都将指向/usr/local/apache/vhosts/example.com

对于基于IP的虚拟主机,您可以在配置文件中使用以下内容:

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

如果IP地址为10.20.30.40 http://www.domain.example.com/directory/file.html ,该文件将满足的 请求 。通过执行该程序可以满足的 要求 。/usr/local/apache/vhosts/10/20/30/40/docs/directory/file.htmlwww.domain.example.comhttp://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分别与该模块一起有用的。

最佳

VirtualDocumentRoot 指令

描述:动态配置给定虚拟主机的文档根目录位置
句法:VirtualDocumentRoot interpolated-directory|none
默认:VirtualDocumentRoot none
内容:服务器配置,虚拟主机
状态:延期
模块:mod_vhost_alias

VirtualDocumentRoot指令允许您根据服务器名称的值来确定Apache HTTP Server在何处可以找到您的文档。扩展内插目录的结果 以与DocumentRoot指令的自变量类似的方式用作文档树的根。如果内插值目录none然后 VirtualDocumentRoot被关闭。此伪指令不能与使用在同一上下文中VirtualDocumentRootIP

注意

VirtualDocumentRoot将覆盖DocumentRoot您可能在相同上下文或子上下文中放置的所有指令。除非 在每个虚拟主机中都设置为,否则将a VirtualDocumentRoot 放入全局服务器范围将有效地覆盖DocumentRoot以后定义的任何虚拟主机中的指令。 VirtualDocumentRootNone
最佳

VirtualDocumentRootIP 指令

描述:动态配置给定虚拟主机的文档根目录位置
句法:VirtualDocumentRootIP interpolated-directory|none
默认:VirtualDocumentRootIP none
内容:服务器配置,虚拟主机
状态:延期
模块:mod_vhost_alias

VirtualDocumentRootIP伪指令与VirtualDocumentRoot 伪指令类似 ,不同之处在于它使用连接服务器端的IP地址进行目录插值,而不使用服务器名。

最佳

VirtualScriptAlias 指令

描述:动态配置给定虚拟主机的CGI目录的位置
句法:VirtualScriptAlias interpolated-directory|none
默认:VirtualScriptAlias none
内容:服务器配置,虚拟主机
状态:延期
模块:mod_vhost_alias

VirtualScriptAlias指令使您可以确定Apache httpd在何处可以找到CGI脚本,就像VirtualDocumentRoot在其他文档中一样。它匹配对开始的URI的请求/cgi-bin/,就像ScriptAlias /cgi-bin/这样。

最佳

VirtualScriptAliasIP 指令

描述:动态配置给定虚拟主机的CGI目录的位置
句法:VirtualScriptAliasIP interpolated-directory|none
默认:VirtualScriptAliasIP none
内容:服务器配置,虚拟主机
状态:延期
模块:mod_vhost_alias

VirtualScriptAliasIP伪指令与VirtualScriptAlias 伪指令类似 ,不同之处在于它使用连接服务器端的IP地址进行目录插值,而不使用服务器名。

可用语言: zh  |  fr  |  TR 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。