配置绑定两个域名
www1.example.com
www2.example.org
到一个 IP 地址172.20.30.40
。
<VirtualHost 172.20.30.40:80>
ServerAdmin [email protected]
DocumentRoot "/www/vhosts/www1"
ServerName www1.example.com
ErrorLog "/www/logs/www1/error_log"
CustomLog "/www/logs/www1/access_log" combined
</VirtualHost>
<VirtualHost 172.20.30.40:80>
ServerAdmin [email protected]
DocumentRoot "/www/vhosts/www2"
ServerName www2.example.org
ErrorLog "/www/logs/www2/error_log"
CustomLog "/www/logs/www2/access_log" combined
</VirtualHost>
我的困惑是:如果我输入172.20.30.50:80
,apache 会显示哪个域的网页?
www1.example.com
或者 www1.example.com
?
答案1
来自 Apache 的基于名称的虚拟主机支持文档:
基于名称的虚拟主机解析仅在将候选范围缩小到最佳的基于 IP 的匹配后才选择最合适的基于名称的虚拟主机。[…]
当请求到达时,服务器将根据请求使用的 IP 地址和端口找到最佳(最具体)匹配参数。[…]
IP 和端口组合的默认基于名称的虚拟主机
如果在包含最具体匹配的 IP 地址和端口组合的虚拟主机集合中未找到匹配的 ServerName 或 ServerAlias,则第一个列出的虚拟主机与之匹配的将被使用。