Apache 虚拟主机配置

Apache 配置指令 相关

<VirtualHost> 指令 指定主机名或IP地址


说明 包含仅作用于指定主机名或IP地址的指令
语法 <VirtualHost addr[:port] [addr[:port]] …> … </VirtualHost>
作用域 server config
状态 核心(C)
模块 core

<VirtualHost>  </VirtualHost> 是用于封装一组仅作用于特定虚拟主机的指令。
任何在虚拟主机配置中可以使用的指令也同样可以在这里使用。
当服务器接受了一个特定虚拟主机的文档请求时,它会使用封装在 配置段中的指令。

它的值可以是 

  • 虚拟主机的IP地址
  • 虚拟主机IP地址对应的完整域名
  • 字符 “*”,仅与 “NameVirtualHost *:port” 配合使用以匹配所有的IP地址
  • 字符串 “default“,与基于IP的虚拟主机联用以捕获所有没有匹配的IP地址
  • 每个虚拟主机必须对应不同的IP地址、端口号或是不同的主机域名。
    1. 对应IP地址的服务器所在的物理机器必须配置多个IP地址。(在机器没有多个网络硬件界面的情况下,如果您的操作系统支持,您可以使用 ifconfig alias 命令来达到这个目的)。
  • 示例

 注意 <VirtualHost> 的使用并不影响 Apache 的监听地址。你需要使用 Listen 来确保Apache正在监听正确的地址。

参见

NameVirtualHost


说明 为一个基于域名的虚拟主机指定一个IP地址(和端口)
语法 NameVirtualHost addr[:port]
作用域 server config
状态 核心(C)
模块 core
  • 使用基于域名的虚拟主机,必须指定服务器 IP地址和端口 来使主机接受请求,可以用 NameVirtualHost 指令来进行配置。
  • 如果服务器上所有的IP地址都会用到,请用 “*” 作为 NameVirtualHost 的参数。
  • 如果使用多端口 (如运行 SSL协议) 则必须在参数中指定一个端口号,比如 “*:80″。
  •   NameVirtualHost 指令中指定IP地址并不会使服务器自动侦听那个IP地址。
  • 请参阅设置 Apache使用的地址和端口一章获取更多详情。另外,这里设定的IP地址必须对应服务器上的一个网络接口。

取消中心主机(Mainhost)

  • 如果想在现有的 web 服务器上增加虚拟主机,必须也为现存的主机建造一个 <VirtualHost> 定义块
    这个虚拟主机中 ServerName  DocumentRoot 所包含的内容应该与全局的 ServerName  DocumentRoot 保持一致。
  • 还要把这个虚拟主机放在配置文件的最前面,来让它扮演默认主机的角色。
  • 示例

ServerName 指令 辨识主机和端口


说明 服务器用于辨识自己的主机名和端口号
语法 ServerName fully-qualified-domain-name[:port]
作用域 server config, virtual host
状态 核心(C)
模块 core
兼容性 在2.0版中,这个指令代替了1.3版的Port指令的功能;scheme仅在2.2.3及之后的版本中可用。
  • ServerName 指令设置了服务器用于辨识自己的主机名和端口号。这主要用于创建重定向 URL。
  • 比如,一个放置 web 服务器的主机名为 simple.example.com ,但同时有一个DNS别名 www.example.com 。而您希望 web 服务器更显著一点,您可以使用如下的指令:

  • 当没有指定 ServerName 时,服务器会尝试对IP地址进行反向查询来推断主机名。如果在 ServerName 中没有指定端口号,服务器会使用接受请求的那个端口。
  • 为了加强可靠性和可预测性,应该使用 ServerName 显式的指定一个主机名和端口号
  • 如果使用的是基于域名的虚拟主机,在 <VirtualHost> 段中的 ServerName 将是为了匹配这个虚拟主机,在 “Host:” 请求头中必须出现的主机名。
  •  ServerName 指令可能出现在服务器定义的任何位置。但是,每个外观都会覆盖先前的外观(在该服务器内)。
  • 参见UseCanonicalName和UseCanonicalPhysicalPort指令以获得关于自引用URL(比如使用mod_dir模块)是需要指定一个特定端口,还是使用客户端请求的端口号的更详细的信息。

参阅

 

ServerAlias 指令 虚拟主机别名


说明 匹配一个基于域名的虚拟主机的别名
语法 ServerAlias hostname [hostname] …
作用域 virtual host
状态 核心(C)
模块 core

ServerAlias 指令设定主机的别名,用于基于域名的虚拟主机

  • 如果合适的话,ServerAlias可以包含通配符

  • 基于名称的虚拟主机,用于 <virtualhost> 的最佳匹配集,按照它们在配置中出现的顺序进行处理。
  • 第一个匹配 ServerName  ServerAlias ,通配符没有不同的优先级( ServerName 与 ServerAlias 也没有)。
  • <VirtualHost> 指令中的完整名称列表被视为(非通配符) ServerAlias。别名来处理。

参阅

 

ServerPath 指令 为兼容性不好的浏览器访问基于域名的虚拟主机保留的URL路径名


说明 为兼容性不好的浏览器访问基于域名的虚拟主机保留的URL路径名
语法 ServerPath URL-path
作用域 virtual host
状态 核心(C)
模块 core

ServerPath 指令为主机设置了保守的 (legacy) URL路径名,用于和基于域名的虚拟主机配合使用

发表评论