操作系统:CentOS 6.9。 HTTPD 版本 2.2
我有两个 IP 地址,其中一个上有十几个虚拟主机。我需要的是当访问者在浏览器中仅打开 IP 地址时能够切换默认显示的虚拟主机。
目前,我知道实现这一目标的唯一方法是替换虚拟系统,第一个系统默认工作。我正在寻找更好的解决方案。有吗?我需要某种指令,这样我就可以使用脚本切换默认虚拟主机,而不是手动编辑 httpd.conf。
我整个早上都在谷歌上搜索。找到以下信息:
设置ServerAlias my.2nd.ip.addr
- 对我不起作用。
设置VirtualHost _default_:80
而不是 VirtualHost my.2nd.ip.addr:80
- 没有达到预期的效果。
ServerName my.2nd.ip.addr
将域设置并添加为ServerAlias
- 仍然没有。
任何帮助,将不胜感激。
答案1
正如您所暗示的,通过 IP 地址访问时,默认情况下会打开“第一个虚拟主机”。
棘手的部分是理解 Apache 如何决定哪个是“第一个”;实际上它对活动/启用的虚拟主机进行排序文件名,以及按升序排序的较低/第一个文件名,对应于使用该 IP 地址的虚拟主机获胜,并被选为“第一个”。
因此,无论虚拟主机名称如何,如果您将文件命名为第一个 IP 地址,例如0.conf
第二个 IP 地址,这些虚拟主机文件将“获胜”并用作服务器打开时的默认虚拟主机通过IP地址进行浏览。0actualvhostname.conf
1.conf
这也是为什么在 Debian 中,默认的 Apache 虚拟主机配置文件被命名为000-default.conf
.
vhost文件名更改后还需要重新启动Apache;如:
sudo apache2ctl -k graceful