正确的方法来禁用Apache在本地主机上侦听

我pipe理一些用于生产网站的Mac OSX XServes,最近遇到了解决某些网站DNSparsing服务器的问题。 进一步的调查显示,httpd.confconfiguration为侦听所有IP(端口80),但虚拟主机configuration仅应用于域(不是本地主机)的实际IP。

例如(手绘configuration,可能在语法上不正确,缺less不相关的选项):在httpd.conf中:Listen 80

在域A:80.conf:ServerName domainA.com

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

当domainB.com在同一台计算机上向domainA.com呼叫时会发生什么,它将使用本地主机IP地址。 因此,而不是使用正确的virtualHostconfiguration,它使用了默认的configuration(这花了我很长的时间来弄清楚,但它是非常有意义的)

我真的没有必要从本地主机访问域,所以我的问题是:什么是禁用Apache试图访问使用127.0.0.1configuration的最佳方法是什么?

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

2)更新httpd.conf文件只侦听相应的1.2.3.4 IP地址(Listen 1.2.3.4:80)?

旁注:我暂时使用了选项1,因为我使用了Tenonconfiguration,并且不确定在'Listen'中更改默认值的影响。

您的select2是正确的方法。 您可能会在您的httpd.conf中findListen 80语句,该语句是在所有可用的接口上对端口80进行监听。 将其改为Listen 1.2.3.4:80将限制为该地址。

因此,而不是使用正确的virtualHostconfiguration,它使用了默认的configuration(这花了我很长的时间来弄清楚,但它是非常有意义的)

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

是否有任何特定的原因,你在本地主机文件中列出这些域? 如果其他人能够访问您的服务器,则表明您拥有适当的DNS。 如果你真的希望他们在本地主机文件,你可以把他们与他们的实际IP地址,而不是使本地主机的名称别名。