我正在使用Vagrant 1.6.3来运行Ubuntu 12.04虚拟机。在这个虚拟机上我有Apache 2.4.9。很长一段时间Apache只提供一个站点 - / sites-available目录中有000-default.conf文件。
现在我想添加另一个网站。我在/ sites-available目录中创建了2个文件:
我将000-default.conf重命名为 default 。我还将site1.local和site2.local主机添加到主机上的./etc/hosts文件中。
Apache配置中的服务器名称相应地设置为site1.local和site2.local。当我在浏览器中输入http://site1.local:8080/和http://site2.local:8080/时,一切正常。
但我不明白为什么http://localhost:8080/仍指向第一个网站?在什么配置中我应该为“localhost”定义映射?在apache configs中设置服务器名称后,我认为http://localhost:8080/应该返回“无法连接到服务器”错误。
答案 0 :(得分:1)
假设您正在使用name-based virtual host,则site1和site2可以正常工作,因为客户端会在标头中传递目标主机:
如果客户端提供了Host:header字段,则会在列表中搜索匹配的vhost,并在ServerName或ServerAlias上进行第一次命中,并从该vhost提供请求。
使用localhost
,它不知道如何匹配定义的虚拟主机条目:
如果找不到匹配的vhost,请求将从第一个vhost提供,该端口号与客户端连接的IP列表中的匹配端口号(如前所述)。
就问题的最后部分而言,您可以使用localhost
作为名称定义来添加另一个虚拟主机条目。