我看到一个 Apache 配置可以指定一个特定的 IP 地址来监听(至少在定义 VirtualHosts 时):
NameVirtualHost *:80
<VirtualHost *:80>
在什么情况下指定地址而不是使用通配符更有优势?
(我最近在一台IP地址发生变化的机器上工作,并且配置Apache的那个人没有使用通配符,所以它除了404之外没有任何服务。我没有想到寻找这个配置,所以问题直到我让他和我一起排除故障才得到解决。我能否从服务或日志中获得更多调试信息来帮助我识别这个问题?)
如果您在同一台服务器上托管多个站点,则可以使用不同的主机名或不同的 IP 将它们分开。
例如:
基于主机的虚拟主机配置:
基于 IP 的虚拟主机配置:
您可以在 Apache官方文档站点上找到更多信息。
将特定虚拟主机绑定到特定 IP 地址的最常见实际原因通常是在默认 HTTPS 端口上支持不同 HTTPS 站点的不同 SSL 证书。
随着现代浏览器对SNI 支持的广泛适应,这不再是一个大问题。
第二个实际原因是在多宿主 Web 服务器上。内部网络上的 Intranet 网站仅限于该网络接口,强制它只能从内部 LAN 而不是 WAN 接口访问(例如,带有欺骗的 Host: 标头)。