假设blah.com
,blah2.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上默认有这么多不同的配置文件,对于这么简单的事情?
答案 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,所以古老的浏览器都运气不好反正。
对于配置文件,拥有两类配置文件非常有用:包含更新将覆盖的默认配置文件,以及不会触及的本地配置文件,甚至更好的配置文件一个充满前者的目录和一个充满后者的目录。 (因为其他软件包可能需要进行配置设置,所以它们都安装在以前的位置,您应该只在第二个位置更改/覆盖配置。)