• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mod_vhost_alias

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

    摘要

    此模块通过允许将 HTTP 请求的 IP 地址 and/or Host:标头用作路径名的一部分来确定要提供的 files,从而创建动态配置的虚拟主机。这允许容易地使用具有类似配置的大量虚拟主机。

    注意

    如果mod_alias或mod_userdir用于将 URI 转换为文件名,则它们将覆盖下面描述的mod_vhost_alias指令。例如,以下 configuration 将在所有情况下 map /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/"
    

    目录名称插值

    该模块中的所有指令都将 string 插入到路径名中。内插的 string(以下称为“name”)可以是服务器 name(有关如何确定的详细信息,请参阅UseCanonicalName指令)或 dotted-quad 格式的服务器上虚拟 host 的 IP 地址。插值由printf启发的说明符控制,它具有多种格式:

    %%插入%
    %p插入虚拟 host 的 port 号
    %N.Minsert(部分)name

    NM用于指定 name 的子字符串。N从 name 的 dot-separated 组件中选择,M选择N选择的字符。M是可选的,如果不存在则默认为零;当且仅当M存在时,该点必须存在。解释如下:

    0整个 name
    1第一部分
    2第二部分
    -1最后一部分
    -2倒数第二部分
    2+第二部分和所有后续部分
    -2+倒数第二个和所有前面的部分
    1+-1+0相同

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

    例子

    对于简单的 name-based 虚拟主机,您可以在服务器 configuration 文件中使用以下指令:

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

    文件/usr/local/apache/vhosts/www.example.com/directory/file.html将满足http://www.example.com/directory/file.html的请求。

    对于非常大量的虚拟主机,安排 files 以减小vhosts目录的大小是一个很好的选择。为此,您可以在 configuration 文件中使用以下内容:

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

    文件/usr/local/apache/vhosts/example.com/d/o/m/domain/directory/file.html将满足http://www.domain.example.com/directory/file.html的请求。

    对于 example,可以通过从 name 的末尾进行散列来实现更均匀的 files 扩展:

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

    example 请求来自/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+"
    

    example 请求来自/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 example.com始终 yield 域 name 和 tld)可能是有益的,无论附加到主机名的子域的数量是多少。因此,可以进行 configuration,将所有第一,第二或第三 level 子域指向同一目录:

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

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

    对于 IP-based 虚拟主机,您可以在 configuration 文件中使用以下内容:

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

    如果www.domain.example.com的 IP 地址为 10.20.30.40,则文件/usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html将满足http://www.domain.example.com/directory/file.html的请求。执行程序/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl将满足http://www.domain.example.com/cgi-bin/script.pl的请求。

    如果要在VirtualDocumentRoot指令中包含.字符,但它与%指令冲突,则可以通过以下方式解决问题:

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

    文件/usr/local/apache/vhosts/domain.example/directory/file.html将满足http://www.domain.example.com/directory/file.html的请求。

    LogFormat指令%V%A与此模块一起使用非常有用。

    VirtualDocumentRoot 指令

    描述:动态配置给定虚拟 host 的文档根目录的位置
    句法:VirtualDocumentRoot interpolated-directory\|none
    默认:VirtualDocumentRoot none
    Context:server config,virtual host
    状态:延期
    模块:mod_vhost_alias

    VirtualDocumentRoot指令允许您根据服务器 name 的 value 确定 Apache HTTP Server 将在何处找到您的文档。扩展 interpolated-directory 的结果用作文档树的根,其方式与DocumentRoot指令的参数类似。如果 interpolated-directory 是none则关闭VirtualDocumentRoot。该指令不能与VirtualDocumentRootIP在同一 context 中使用。

    注意

    VirtualDocumentRoot将覆盖您可能放在同一 context 或子上下文中的任何DocumentRoot指令。将VirtualDocumentRoot放在 global 服务器作用域中将有效地覆盖稍后定义的任何虚拟主机中的DocumentRoot指令,除非您在每个虚拟 host 中将VirtualDocumentRoot设置为None

    VirtualDocumentRootIP 指令

    描述:动态配置给定虚拟 host 的文档根目录的位置
    句法:VirtualDocumentRootIP interpolated-directory\|none
    默认:VirtualDocumentRootIP none
    Context:server config,virtual host
    状态:延期
    模块:mod_vhost_alias

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

    VirtualScriptAlias 指令

    描述:动态配置给定虚拟 host 的 CGI 目录的位置
    句法:VirtualScriptAlias interpolated-directory\|none
    默认:VirtualScriptAlias none
    Context:server config,virtual host
    状态:延期
    模块:mod_vhost_alias

    VirtualScriptAlias指令允许您确定 Apache httpd 将以类似于VirtualDocumentRoot为其他文档的方式查找 CGI 脚本的位置。它匹配从/cgi-bin/开始的 URI 请求,就像ScriptAlias 指令/cgi-bin/那样。

    VirtualScriptAliasIP 指令

    描述:动态配置给定虚拟 host 的 CGI 目录的位置
    句法:VirtualScriptAliasIP interpolated-directory\|none
    默认:VirtualScriptAliasIP none
    Context:server config,virtual host
    状态:延期
    模块:mod_vhost_alias

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

    上篇:mod_version

    下篇:mod_watchdog