Apache vhosts 配置

Apache vhosts 配置

我在试图弄清楚这一点时遇到了很大的困难,所以请帮助我。

我已经配置了几个虚拟主机,并使用 Debian 默认方式配置虚拟主机。

2 个文件夹

  • 可用站点
  • 已启用站点

并且一些文件被符号链接到已启用站点,ln -s ...并且在此步骤中,我将文件重命名为具有权重,200-... 300-... 以获得优先级。

当我尝试配置一组虚拟主机时:

<VirtualHost test.host.priv:80>
  ServerName test.host.priv
  DocumentRoot "/htdocs/Private/web/production/somedomain/web"
</VirtualHost>

<VirtualHost host.com:80>
  ServerName host.com
  ServerAlias www.host.com
  DocumentRoot "/htdocs/Private/web/production/somedomain/web"
</VirtualHost>

现在我有几个这样的,还有一些*:80。但是我如何确保它们只监听我指定的服务器名称?因为 apache 开始将它们用作通配符等。在这种情况下,如果未在更高优先级的文件中配置,则每个域都默认返回到 test.host.priv。我不想要那样,我试过使用*:80test.host.priv:80但它根本不在乎,它仍然默认为此,因此任何未指定的子域都会进入这里。

任何建议都很好!

/马库斯

答案1

Apache 通过与 VHosts 匹配ServerName以及ServerAlias何时NameVirtualHost在特定的 Listener 上处于活动状态,我想这就是您在这里所缺少的。

使用 Debian 时,您将拥有一个ports.conf默认的,Listen 80这意味着在所有可用接口上监听端口 80。然后,您可以使用NameVirtualHost *:80并编写主机,如下所示:

<VirtualHost *:80>
  ServerName test.host.priv
  DocumentRoot "/htdocs/Private/web/production/somedomain/web"
</VirtualHost>

<VirtualHost *:80>
  ServerName host.com
  ServerAlias www.host.com
  DocumentRoot "/htdocs/Private/web/production/somedomain/web"
</VirtualHost>

你可以按照你喜欢的方式改变它,只是之前<VirtualHost [something]:[someport]>需要一个“匹配” 。NameVirtualHost [something]:[someport]

http://httpd.apache.org/docs/2.2/mod/core.html#NameVirtualHost了解详情。

相关内容