禁用本地主机上 Apache 监听的正确方法

禁用本地主机上 Apache 监听的正确方法

我管理一些用于生产网站的 Mac OSX XServes,最近遇到了服务器解析某些网站的 DNS 的问题。进一步调查发现,httpd.conf 配置为监听所有 IP(端口 80),但虚拟主机配置仅适用于域的实际 IP(而不是本地主机)。

例如(自由配置,可能语法不正确且缺少不相关的选项):在 httpd.conf 中:监听 80

在 domainA:80.conf 中:ServerName domainA.com

现在,在 /etc/hosts 文件中,它有以下条目:127.0.0.1 localhost 127.0.0.1 domainA.com

当 domainB.com 在同一台机器上调用 domainA.com 时,它会使用 localhost IP 地址。因此,它没有使用正确的 virtualHost 配置,而是使用了默认配置(我花了很长时间才弄清楚,但这完全说得通)

我实际上不需要从本地主机访问域,所以我的问题是:禁止 apache 尝试使用 127.0.0.1 访问配置的最佳方法是什么?

1)注释掉 /etc/hosts 中的“127.0.0.1 domainA.com”条目(这是我临时修复它的方法,但这真的是一个好的解决方案)吗?

2)更新 httpd.conf 文件以仅监听适当的 1.2.3.4 IP 地址(监听 1.2.3.4:80)?

旁注:我暂时选择了选项 1,因为我使用 Tenon 配置,并且不确定更改“Listen”上的默认值会产生什么后果

答案1

您的选项 2 是正确的选择。您可能会Listen 80在 httpd.conf 中找到一条语句,该语句表示在所有可用接口上监听端口 80。将其更改为Listen 1.2.3.4:80会将其限制在该地址。

答案2

因此,它没有使用正确的 virtualHost 配置,而是使用了默认配置(我花了很长时间才弄清楚,但它完全有道理)

如果您使用的是基于名称的虚拟主机,这应该不是问题。在这种情况下,Apache 根据请求的主机名匹配虚拟主机;IP 地址无关紧要。只有在您使用 SSL(在大多数情况下需要基于地址或端口的虚拟主机)时,这才会成为问题。

您在本地 hosts 文件中列出这些域有什么特别的原因吗?如果其他人能够访问您的服务器,则表明您已设置了适当的 DNS。如果您确实希望它们在本地 hosts 文件中,您可以将它们与实际 IP 地址一起放在那里,而不是将名称设为 localhost 的别名。

相关内容