描述: | 提供动态配置的大规模虚拟主机 |
---|---|
状态: | 延期 |
模块标识符: | vhost_alias_module |
源文件: | mod_vhost_alias.c |
该模块通过允许IP地址和/或Host:
HTTP请求的标头用作路径名的一部分来确定要服务的文件,来创建动态配置的虚拟主机。这样可以轻松使用大量具有类似配置的虚拟主机。
如果将mod_alias
或mod_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/"
此模块中的所有指令都将字符串插入到路径名中。插值字符串(以下称为“名称”)可以是服务器名称(UseCanonicalName
有关如何确定此名称的详细信息,请参阅指令)或服务器上虚拟主机的IP(以点分四进制格式)。内插由说明符控制,这些说明符受printf
多种格式影响:
%% |
插入一个 % |
%p |
插入虚拟主机的端口号 |
%N.M |
插入(部分)名称 |
N
和M
用于指定名称的子字符串。N
从名称的点分隔的部分中M
选择,并在N
所选内容中选择字符。
M
是可选的,如果不存在则默认为零;当且仅当存在时,点必须M
存在。解释如下:
0 |
全名 |
1 |
第一部分 |
2 |
第二部分 |
-1 |
最后一部分 |
-2 |
倒数第二部分 |
2+ |
第二部分和所有后续部分 |
-2+ |
倒数第二个及所有先前的部分 |
1+ 和 -1+ |
与...相同 0 |
如果N
或M
大于可用的零件数,则会插入单个下划线。
对于基于名称的简单虚拟主机,可以在服务器配置文件中使用以下指令:
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.com
或example.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.html
www.domain.example.com
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
分别与该模块一起有用的。
描述: | 动态配置给定虚拟主机的文档根目录位置 |
---|---|
句法: | VirtualDocumentRoot interpolated-directory|none |
默认: | VirtualDocumentRoot none |
内容: | 服务器配置,虚拟主机 |
状态: | 延期 |
模块: | mod_vhost_alias |
该VirtualDocumentRoot
指令允许您根据服务器名称的值来确定Apache HTTP Server在何处可以找到您的文档。扩展内插目录的结果
以与DocumentRoot
指令的自变量类似的方式用作文档树的根。如果内插值目录是none
然后
VirtualDocumentRoot
被关闭。此伪指令不能与使用在同一上下文中VirtualDocumentRootIP
。
VirtualDocumentRoot
将覆盖DocumentRoot
您可能在相同上下文或子上下文中放置的所有指令。除非
在每个虚拟主机中都设置为,否则将a VirtualDocumentRoot
放入全局服务器范围将有效地覆盖DocumentRoot
以后定义的任何虚拟主机中的指令。
VirtualDocumentRoot
None
描述: | 动态配置给定虚拟主机的文档根目录位置 |
---|---|
句法: | VirtualDocumentRootIP interpolated-directory|none |
默认: | VirtualDocumentRootIP none |
内容: | 服务器配置,虚拟主机 |
状态: | 延期 |
模块: | mod_vhost_alias |
该VirtualDocumentRootIP
伪指令与VirtualDocumentRoot
伪指令类似
,不同之处在于它使用连接服务器端的IP地址进行目录插值,而不使用服务器名。
描述: | 动态配置给定虚拟主机的CGI目录的位置 |
---|---|
句法: | VirtualScriptAlias interpolated-directory|none |
默认: | VirtualScriptAlias none |
内容: | 服务器配置,虚拟主机 |
状态: | 延期 |
模块: | mod_vhost_alias |
该VirtualScriptAlias
指令使您可以确定Apache httpd在何处可以找到CGI脚本,就像VirtualDocumentRoot
在其他文档中一样。它匹配对开始的URI的请求/cgi-bin/
,就像ScriptAlias
/cgi-bin/
这样。
描述: | 动态配置给定虚拟主机的CGI目录的位置 |
---|---|
句法: | VirtualScriptAliasIP interpolated-directory|none |
默认: | VirtualScriptAliasIP none |
内容: | 服务器配置,虚拟主机 |
状态: | 延期 |
模块: | mod_vhost_alias |
该VirtualScriptAliasIP
伪指令与VirtualScriptAlias
伪指令类似
,不同之处在于它使用连接服务器端的IP地址进行目录插值,而不使用服务器名。