如果您想让同一IP的不同端口伺服多个域名。您可以借助在 “NameVirtualHost”标签中定义端口这样的方法来达到这个目的。如果您 想使用不带NameVirtualHost name:port的<VirtualHost name:port>或是直接用Listen指令,您的配置将无法生效。
服务器配置
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080
<VirtualHost 172.20.30.40:80>
ServerName www.example1.com
DocumentRoot /www/domain-80
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
ServerName www.example1.com
DocumentRoot /www/domain-8080
</VirtualHost>
<VirtualHost 172.20.30.40:80>
ServerName www.example2.org
DocumentRoot /www/otherdomain-80
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
ServerName www.example2.org
DocumentRoot /www/otherdomain-8080
</VirtualHost>
建立基于IP的虚拟主机
一个有两个IP地址(172.20.30.40和 172.20.30.50)分别对应域名 www.example1.com和www.example2.org的服务 配置如下:
服务器配置
Listen 80
<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>
<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>
如果存在主服务器(main server),那么对没有出现在任一个 <VirtualHost>指令中的请求(比如,对 localhost的请求)都会由主服务器来伺服。
混用基于端口和基于IP的虚拟主机
如果您的服务器有两个IP地址(172.20.30.40和 172.20.30.50)分别对应域名 www.example1.com和www.example2.org。对每 个域名,您都希望在80端口和8080端口发布您的网站。您可以这样配置:
服务器配置
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080
<VirtualHost 172.20.30.40:80>
DocumentRoot /www/example1-80
ServerName www.example1.com
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
DocumentRoot /www/example1-8080
ServerName www.example1.com
</VirtualHost>
<VirtualHost 172.20.30.50:80>
DocumentRoot /www/example2-80
ServerName www.example1.org
</VirtualHost>
<VirtualHost 172.20.30.50:8080>
DocumentRoot /www/example2-8080
ServerName www.example2.org
</VirtualHost>
混用基于域名和基于ip的虚拟主机
如果您想在一些地址上配置基于域名的虚拟主机而在另外一些配置基于 IP的虚拟主机。
服务器配置
Listen 80
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/example3
ServerName www.example3.net
</VirtualHost>
# IP-based
<VirtualHost 172.20.30.50>
DocumentRoot /www/example4
ServerName www.example4.edu
</VirtualHost>
<VirtualHost 172.20.30.60>
DocumentRoot /www/example5
ServerName www.example5.gov
</VirtualHost>