• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • <VirtualHost> 指令

    描述:包含仅适用于特定主机名或IP地址的指令
    句法:<VirtualHost addr[:port][addr[:port]]...>...</VirtualHost>
    内容:服务器配置
    状态:核心
    模组:核心

    <VirtualHost>并且</VirtualHost>用于封装一组仅适用于特定虚拟主机的指令。可以使用虚拟主机上下文中允许的任何指令。当服务器在特定虚拟主机上收到对文档的请求时,它将使用本<VirtualHost>节中随附的配置指令。Addr可以是以下任意一种,可以选择后面跟一个冒号和一个端口号(或*):

    • 虚拟主机的IP地址;
    • 虚拟主机IP地址的标准域名(不建议);
    • 字符*,用作通配符并匹配任何IP地址。
    • 字符串_default_,这是别名*
    <VirtualHost 10.1.2.3:80>
      ServerAdmin webmaster@host.example.com
      DocumentRoot "/www/docs/host.example.com"
      ServerName host.example.com
      ErrorLog "logs/host.example.com-error_log"
      TransferLog "logs/host.example.com-access_log"
    </VirtualHost>
    

    必须在方括号中指定IPv6地址,因为否则无法确定可选端口号。一个IPv6示例如下所示:

    <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80>
      ServerAdmin webmaster@host.example.com
      DocumentRoot "/www/docs/host.example.com"
      ServerName host.example.com
      ErrorLog "logs/host.example.com-error_log"
      TransferLog "logs/host.example.com-access_log"
    </VirtualHost>
    

    每个虚拟主机必须对应于服务器的不同IP地址,不同端口号或不同主机名,在前一种情况下,必须将服务器计算机配置为接受多个地址的IP数据包。(如果计算机没有多个网络接口,则可以使用以下ifconfig alias命令完成此操作-如果您的操作系统支持该命令)。

    注意

    使用<VirtualHost>不会影响什么地址的Apache httpd的侦听。您可能需要确保Apache httpd使用监听正确的地址Listen

    ServerName应各自内部指定<VirtualHost>块。如果不存在,ServerName则将继承“主”服务器的配置。

    收到请求后,服务器首先<VirtualHost>仅基于本地IP地址和端口组合将其映射到最佳匹配。非通配符具有更高的优先级。如果根本没有基于IP和端口的匹配发生,则使用“主”服务器配置。

    如果多个虚拟主机包含最匹配的IP地址和端口,则服务器会根据请求的主机名从这些虚拟主机中选择最匹配的主机。如果找不到匹配的基于名称的虚拟主机,则将使用与IP地址匹配的第一个列出的虚拟主机。因此,给定IP地址和端口组合的第一个列出的虚拟主机是该IP地址和端口组合的默认虚拟主机。

    参见

    • Apache HTTP Server虚拟主机文档
    • 有关DNS和Apache HTTP Server的问题
    • 设置Apache HTTP Server使用哪些地址和端口
    • <Directory>,<Location>和<Files>部分的工作方式,以解释接收请求时如何组合这些不同的部分