Apache VirtualHost:同一IP上的多个站点

时间:2014-11-04 11:48:23

标签: apache virtualhost

假设blah.comblah2.com都指向IP = 5.31.111.7的同一服务器。

我希望如此:

  • 访问blah.com服务/var/www/site1

  • 访问blah2.com服务/var/www/site1

  • 访问5.31.111.7服务/var/www/site2

我试过

<VirtualHost *:80>
    DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost 5.31.111.7:80>
   DocumentRoot /var/www/site2
</VirtualHost>

但现在一切都进入/var/www/site2,这不是我想要的。

如何配置VirtualHost,以便服务的网站取决于网址?

PS:我为什么要在/etc/apache2/sites-enabled/000-default而不是/etc/apache2/apache2.conf中执行此操作?我不明白这个sites-enabled / sites-available/default命名...为​​什么在Debian上默认有这么多不同的配置文件,对于这么简单的事情?

1 个答案:

答案 0 :(得分:4)

您想要做的是Name-Based Virtual Hosting,您需要

NameVirtualHost *:80

在端口80上启用它,并且对于每个VirtualHost,您需要提供名称:

<VirtualHost *:80>
ServerName blah2.com
ServerAlias www.blah2.com

DocumentRoot /var/www/site1
</VirtualHost>

请注意,在进行基于名称的虚拟主机时有limitations on SSL/TLS,但是自从POODLE之后它就变得没有实际意义了,人们开始要求TLS,所以古老的浏览器都运气不好反正。

对于配置文件,拥有两类配置文件非常有用:包含更新将覆盖的默认配置文件,以及不会触及的本地配置文件,甚至更好的配置文件一个充满前者的目录和一个充满后者的目录。 (因为其他软件包可能需要进行配置设置,所以它们都安装在以前的位置,您应该只在第二个位置更改/覆盖配置。)