我们的 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 记录。