Apache 1 虚拟主机定义监听 2 个 ips - 如何做?

Apache 1 虚拟主机定义监听 2 个 ips - 如何做?

我们的 httpd.conf 文件中有几个复杂的虚拟主机定义。

我的意思是:

<VirtualHost .....>
....
</VirtualHost>

我所说的复杂是指它们充满了重写规则等等。

我们想将此虚拟主机绑定到 2 个 IP 地址。目前它只绑定到一个。

是否可以使用单个 VirtualHost 将虚拟主机绑定到 2 个 IP 地址?

如果我们未来需要做出改变,那么拥有一个单一的版本将会让事情变得容易得多。

答案1

处理此问题的简单方法是将公共位提取到单独的文件中(例如/path/to/foo),然后将Include其提取到 vhost defs 中:

<Vitrualhost ...>
  ServerName X
  DocumentRoot Y
  Include /path/to/foo
</Virtualhost>

<Vitrualhost ...>
  ServerName Z
  DocumentRoot A
  Include /path/to/foo
</Virtualhost>

注意:不要放在/path/to/foo会被其他地方的通配符拉进来的地方Include

答案2

您可以在定义中放置多个 IP/端口说明符,如文档

例子:

<VirtualHost 1.2.3.4:80 2.3.4.5:80 1.2.3.4:8080>
DocumentRoot /path/to/wherever
ServerName example.com
# Stuff goes here
</VirtualHost>

只需确保 Apache 配置了足够的 NameVirtualHost 定义。

答案3

当然:

Listen 80

<VirtualHost _default_:80>
    ...
</VirtualHost>

或者,考虑使用基于名称的虚拟主机。

答案4

我可能会使用命名虚拟主机,并对 DNS 进行修改,以便两个 IP 都具有相同主机名的 A 记录。

相关内容