Update avaliable. Click RELOAD to update.
目录

Apache虚拟主机的各种配置寻址方式


Apache虚拟主机的各种配置寻址方式

1. 名称(域名)寻址

NameVirtualHost *

<VirtualHost *>
    DocumentRoot "E:/www/www.test.com"
    ServerName test.com
    ServerAlias www.test.com
    ErrorLog "logs/dummy-www.test.com-error.log"
    CustomLog "logs/dummy-www.test.com-access.log" common
</VirtualHost>

<VirtualHost *>
    DocumentRoot "E:/www/www.abc.com"
    ServerName abc.com
    ServerAlias www.abc.com
    ErrorLog "logs/dummy-www.abc.com-error.log"
    CustomLog "logs/dummy-www.abc.com-access.log" common
</VirtualHost>

应对IP紧张,一台apache服务器部署多个站点的解决方案。节点NameVirtualHost和VirtualHost指令参数相同,通过ServerName和ServerAlias进行寻址导向。

2. 默认名称(域名)寻址服务器

<VirtualHost *>
    DocumentRoot "E:/www/default"
    ServerName default
</VirtualHost

对于域名映射到服务器中,但服务器中没有配置或者配置错误了对应域名的虚拟主机,则跳转到默认虚拟机主机。

3. IP寻址

NameVirtualHost *

<VirtualHost 10.10.10.1>
    DocumentRoot "E:/www/www.test.com"
    ErrorLog "logs/dummy-www.test.com-error.log"
    CustomLog "logs/dummy-www.test.com-access.log" common
</VirtualHost>

<VirtualHost 192.168.3.7>
    DocumentRoot "E:/www/www.abc.com"
    ErrorLog "logs/dummy-www.abc.com-error.log"
    CustomLog "logs/dummy-www.abc.com-access.log" common
</VirtualHost

服务器上存在多个IP、网卡或者虚拟网卡,希望在每个IP地址上配置各自的虚拟主机。这里分别为192.168.3.7和10.10.10.1分配了虚拟主机。

4. 默认IP寻址服务器

<VirtualHost _default_>
    DocumentRoot "E:/www/default"
</VirtualHost

_default_关键字会建立虚拟主机,处理所有未设定虚拟主机的“地址:端口号”的请求。

5. 多个IP指定相同虚拟主机

<VirtualHost 10.10.10.1 192.168.3.7>
    DocumentRoot "E:/www/www.test.com"
    ErrorLog "logs/dummy-www.test.com-error.log"
    CustomLog "logs/dummy-www.test.com-access.log" common
</VirtualHost

希望在两个IP地址上显示相同的网页内容

6. 端口寻址

Listen 9999
<VirtualHost www.abc.com:9999>
    DocumentRoot "E:/www/port"
    ServerName abc.com
    ServerAlias www.abc.com
</VirtualHost

7. mod_vhost_alias创建大量虚拟主机

编辑httpd.conf文件

# 开启mod_vhost_alias模块(默认不开启)
LoadModule vhost_alias_module modules/mod_vhost_alias.so
# 增加一个虚拟主机的配置文件
Include conf/extra/much-vhosts.conf

编辑much-vhosts.conf文件

VirtualDocumentRoot "E:/www/%2+"
VirtualScriptAlias "E:/www/%2+"

这里配置了3个域名分别是www.aaa.com、www.bbb.com、www.ccc.com,对应的目录为E:/www/aaa.com、E:/www/bbb.com、E:/www/ccc.com,在much-vhosts.conf文件中配置的指向地址使用了mod_vhost_alias的变量%2+代替,意思是取请求域名最后两部分和虚拟主机目录对应。具体含义如下:

mod_vhosts_alias变量值

  0      整个名称
  1      名称的第一部分
 -1      名称的最后一部分
  2      名称的第二部分
 -2      名称的倒数第二部分
 2+      第二及之后的所有部分
-2+      倒数第二及之前的所有部分

以www.abc.com域名举例

%0			www.abc.com
%1			www
%2			abc
%3			com
%-1			com
%-2			abc
%-3			www
%-2.1		a
%-2.2+		bc
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2015/11/apache-virtual-host-lookup/