Apache虚拟主机 – 一个站点,两个IP地址

是否可以configuration一个Apache(v2.x,在Plesk 10.4.4下运行)虚拟主机一次侦听两个IP地址? 我们正在将一个站点从服务器上的一个IP移动到另一个IP(这样我们就可以安装一个SSL – 不幸的是,SNI不是一种select),并希望站点在两个IP上保持活动状态,以避免停机,直到DNS更改完成。

所以现在开始,比如说1.1.1.1,我们希望它继续在1.1.1.1上工作,但是同时也在1.1.1.2上工作,直到DNS完成,然后它可以是1.1.1.2。

这是否像复制虚拟主机条目和更改IP一样简单,还是有更多/更less的呢?

如果您的apacheconfiguration使用公共约定,它已经在所有接口监听,只需在操作系统级别configuration第二个IP地址,您的网站就可以在两个IP

例如您经常看到的相关行:

... Listen 80 NameVirtualHost *:80 ... <VirtualHost *:80> ServerName dummy-host.example DocumentRoot /www/docs/dummy-host.example </VirtualHost> 

现在,如果你已经绑定Apache到特定的IP地址,你的configuration看起来更像是下面的东西,你将需要改变你的configuration:

 ... 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条目

是的,可以做到。 具体如何改变你的configuration取决于当前如何设置。 复制你的虚拟主机到第二个IP地址几乎肯定是错误的。

阅读Apache的vhost文档 。 改变你的configuration,试试看。 如果它不起作用,请回复一个特定的问题,显示您正在使用的configuration,您尝试的是什么,您希望发生什么,以及发生了什么。 包含相关的日志文件提取。

如果您使用DNSlogging,让我们说www.myhost.com指向1.1.1.1,但是然后指向1.1.1.2。 你只需要改变你的DNS服务器logging指向新的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地址,直到你解除旧的。

让我们知道它是如何工作的。