是否可以配置 Apache(v2.x,在 Plesk 10.4.4 下运行)虚拟主机以同时侦听两个 IP 地址?我们正在将站点从服务器上的一个 IP 移到另一个 IP(以便我们可以安装 SSL - 不幸的是,SNI 不是一个选项),并且希望站点在两个 IP 上都保持活动状态,以避免停机,直到 DNS 更改完成。
因此,目前它在 1.1.1.1 上 - 我们希望它继续在 1.1.1.1 上工作,但同时也在 1.1.1.2 上工作,直到 DNS 完成,然后它就可以是 1.1.1.2。
这是否像复制虚拟主机条目并更改 IP 一样简单,或者还有更多/更少的功能?
答案1
如果你的 Apache 配置使用通用约定,它已经在所有接口上监听,只需在操作系统级别配置第二个 IP 地址,你的网站就可以通过两个 IP 访问
例如您经常会看到的相关行:
...
Listen 80
NameVirtualHost *:80
...
<VirtualHost *:80>
ServerName dummy-host.example
DocumentRoot /www/docs/dummy-host.example
</VirtualHost>
现在如果您已将 Apache 绑定到特定的 IP 地址,您的配置将看起来更像下面的内容,并且您需要更改您的配置:
...
Listen 10.9.8.7:80
NameVirtualHost 10.9.8.7:80
...
<VirtualHost 10.9.8.7:80>
ServerName dummy-host.example
DocumentRoot /www/docs/dummy-host.example
</VirtualHost>
注意:更改 IP 地址时,不要忽略/etc/hosts
答案2
是的,可以做到。具体需要如何更改配置取决于当前的设置方式。复制虚拟主机以使用新的 IP 地址创建第二个虚拟主机几乎肯定是错误的方法。
读Apache vhost 文档。更改您的配置,尝试一下。如果不起作用,请回复一个具体问题,说明您正在使用的配置、您尝试过的方法、您期望发生的情况以及实际发生的情况。包括相关的日志文件摘录。
答案3
如果您使用 DNS 记录,假设 www.myhost.com 指向 1.1.1.1,但随后又指向 1.1.1.2。您只需更改 DNS 服务器记录以指向新的 IP 地址。您的虚拟主机条目可能类似于:
<VirtualHost www.myhost.com:80>
ServerAdmin [email protected]
DocumentRoot //www
ServerName www.myhost.com
ErrorLog /logs/error_log
TransferLog /logs/access_log
</VirtualHost>
我们可以看到,此主机条目没有显示任何 IP 地址硬链接。因此,Apache 服务器将直接响应针对 www.myhost.com 发送的任何请求。
请注意,Apache 需要监听两个 IP 地址,直到您取消提交旧的 IP 地址。
让我们知道它是如何运作的。