【问题标题】:Apache VirtualHost : multiple sites on same IPApache VirtualHost:同一IP上的多个站点
【发布时间】:2014-12-31 07:10:48
【问题描述】:

假设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,使服务的网站依赖于URL?

PS:为什么我应该在 /etc/apache2/sites-enabled/000-default 而不是 /etc/apache2/apache2.conf 中这样做?看不懂这个sites-enabled/sites-available/default的命名...为​​什么Debian默认会有这么多不同的配置文件,这么简单的事情?

【问题讨论】:

标签: apache virtualhost


【解决方案1】:

你想做的事叫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,所以无论如何古老的浏览器都不走运。

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

【讨论】:

  • 谢谢!即使没有NameVirtualHost *:80,它也适用于您的代码。关于配置文件,site-enabled / sites-available 到底是什么?这不是很明确...
  • @Basj:我假设您的目的是将sites-enabled 中的符号链接放入sites-available 以供您使用。这样,您可以通过删除符号链接快速关闭某些内容,并且您可以在sites-available 中准备内容,而不必立即担心拼写错误。 (请记住,您的同事可能会在您编辑配置文件时重新启动服务器。)
猜你喜欢
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 2016-05-21
  • 2013-07-31
  • 2011-10-17
  • 2011-01-20
相关资源
最近更新 更多