为什么要在 Apache 配置中监听特定的 IP 地址?

为什么要在 Apache 配置中监听特定的 IP 地址?

我看到 Apache 配置可以指定要监听的特定 IP 地址(至少在定义 VirtualHosts 时):

NameVirtualHost *:80

<VirtualHost *:80>

在什么情况下指定地址而不是使用通配符会更有利?

(我最近在一台 IP 地址发生变化的机器上工作,而配置 Apache 的人不是使用了通配符,因此它无法提供除 404 之外的任何服务。我没有想到要查找此配置,因此问题一直未得到解决,直到我请他帮我排除故障。我是否可以从服务或日志中获取更多调试信息来帮助我识别此问题?)

答案1

将特定虚拟主机绑定到特定 IP 地址的最常见实际原因通常是在默认 HTTPS 端口上为不同的 HTTPS 站点支持不同的 SSL 证书。
随着SNI 支持在现代浏览器中,这不再是一个大问题。

第二个实际原因是多宿主 Web 服务器。内部网络上的 Intranet 网站被限制在该网络接口上,强制只能从内部 LAN 访问,而不能从 WAN 接口访问(例如使用伪造的 Host: 标头)。

答案2

如果您在同一台服务器上托管多个站点,则可以使用不同的主机名或不同的 IP 来区分它们。

例如:

基于主机的虚拟主机配置:

 NameVirtualHost *:80
<VirtualHost employees.nationalpurchasingpartners.com:80>
 ServerAdmin [email protected]
 DocumentRoot /var/www/intranet/public_html
 ServerName employees.nationalpurchasingpartners.com
</VirtualHost>

<VirtualHost procurementnews.com:80>
 ServerAdmin [email protected] 
 DocumentRoot /var/www/procurement/public_html
 ServerName www.procurementnews.com
 ServerAlias procurementnews.com *.procurementnews.com
</VirtualHost>

基于IP的虚拟主机配置:

<VirtualHost 192.168.0.1:80>
ServerAdmin [email protected]
DocumentRoot /groups/smallco/www
ServerName smallco.example.com
ErrorLog /groups/smallco/logs/error_log
TransferLog /groups/smallco/logs/access_log
</VirtualHost>

<VirtualHost 192.168.0.2:80>
ServerAdmin [email protected]
DocumentRoot /groups/baygroup/www
ServerName baygroup.example.com
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>

您可以在 Apache 上找到更多信息官方文档地点。

相关内容