Apache2和Vagrant:localhost映射

时间:2015-03-09 16:00:59

标签: apache vagrant virtualhost

我正在使用Vagrant 1.6.3来运行Ubuntu 12.04虚拟机。在这个虚拟机上我有Apache 2.4.9。很长一段时间Apache只提供一个站点 - / sites-available目录中有000-default.conf文件。

现在我想添加另一个网站。我在/ sites-available目录中创建了2个文件:

  • site1.local.conf
  • site2.local.conf

我将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/应该返回“无法连接到服务器”错误。

1 个答案:

答案 0 :(得分:1)

假设您正在使用name-based virtual host,则site1和site2可以正常工作,因为客户端会在标头中传递目标主机:

  

如果客户端提供了Host:header字段,则会在列表中搜索匹配的vhost,并在ServerName或ServerAlias上进行第一次命中,并从该vhost提供请求。

使用localhost,它不知道如何匹配定义的虚拟主机条目:

  

如果找不到匹配的vhost,请求将从第一个vhost提供,该端口号与客户端连接的IP列表中的匹配端口号(如前所述)。

就问题的最后部分而言,您可以使用localhost作为名称定义来添加另一个虚拟主机条目。