我必须在备份机器(即CentOS )上运行Apache服务器。在本例中,它是一个WordPress多站点安装。因为它是备份机器,所以DNS服务器没有指向正确的IP地址。
问题是,这里并不是唯一的虚拟主机,还有其他虚拟主机。目录/etc/httpd/conf.d/有这样的文件:00-default.conf、vhost1.conf、vhost2.conf等,其中一个配置文件包含这个WordPress多站点备份。这些虚拟主机配置文件中的每一个看起来或多或少都是相同的:
<VirtualHost *:80>
ServerName vhostX.example.org
# rest of config goes here
</VirtualHost>
<VirtualHost *:443>
ServerName vhostX.example.org
# rest of config goes here
</VirtualHost>WordPress备份的虚拟主机部分包含ServerAlias中多站点的所有可能的主机名。
在我的客户机上,在文件/etc/hosts中,我添加了原始机器的FQDN,以指向备份机器的IP地址。
现在,我观察到的问题如下:
ServerAlias,而不是ServerName。ServerAlias的所有其他域名都由虚拟主机处理,虚拟主机在00-default.conf中配置,而不是用于备份的虚拟主机。这是我最不明白的一点。由于正确的主机名是在SNI和HTTP报头中给出的,所以我希望它能够获得正确的虚拟主机配置,因为域名列在那里是ServerAlias。*:80和*:443替换为IP地址符号,即192.168.1.2:80 resp。192.168.1.2:443,那么这个WordPress备份是工作的,但是没有其他的了(我认为一切都是由WordPress多站点实例处理的,它被配置为重定向到我们的主站点)。我尝试过的内容:客户机上的命令(主机名和IP地址已编辑):
curl -vkLo- --resolve wpsite1.example.org:80:192.168.1.2 --resolve wpsite1.example.org:443:192.168.1.2 'http://wpsite1.example.org'文件/etc/nsswitch.conf设置为在查询DNS服务器之前解析主机文件,如果这与此相关的话。我还尝试将IP地址添加到服务器的文件/etc/hosts中。据我所知,我假设httpd试图在启动时解析DNS名称,但由于DNS服务器将名称解析为生产性IP地址,因此无法工作。
我怎样才能解决这个问题?我必须给主机分配第二个IP地址吗?
发布于 2023-02-06 06:56:38
第二天,我发现了最不明显的事情:
$ apachectl -S
[...]
141.201.80.66:80 is a NameVirtualHost
default server one-of-the-wp-single-sites.example.org (/etc/httpd/conf.d/00_defaults.conf:1)
[...]出于某种原因,我立刻想到这个域名是第一个拥有这个IP地址的域名,这个IP地址列在文件/etc/hosts中。在其他行之前,在文件/etc/hosts中插入本地主机名就可以了:
192.168.1.2 this-host.example.org重新加载Httpd,一切都很好。
https://serverfault.com/questions/1121946
复制相似问题