/ etc / hosts条目用于服务多个域的单个IP服务器

运行Ubuntu 10.04

我的服务器在Apache2中使用命名的虚拟主机提供3个不同的域。 我目前使用不同的命名虚拟服务器301redirectwww到非www等效。 它的工作,但我不明白我的/ etc / hosts文件正确的条目,我认为这是造成我试图设置清漆的问题。

我知道我需要本地主机线

127.0.0.1 localhost localhost.localdomain 

我是否也应该列出每个域名? 如在

 127.0.0.1 localhost localhost.localdomain example1.com example2.com example3.com 

那么服务器IP的入口呢? 我需要以下行吗?

 < IP.Of.Server > example1.com example2.com example3.com 

另外,我应该在每行上列出www.example.com和example.com,这样他们就可以进入Apache了,它可以处理301 redir?

我假设这是testing,否则你会设置适当的DNSlogging,而不是你的hosts文件。

你想要的是每个你想要调用你的Web服务器的名字,以解决你的服务器的IP地址。

如果你正在从服务器本身进行testing,那么你可以使所有的指向127.0.0.1,但当然也使它指向你的服务器的实际IP地址将工作。

如果您是从另一台机器进行testing,那么您当然需要将每个名称parsing为服务器的真实IP地址。

语法是straingthforward:

 IP.of.server www.domain.name domain.name IP.of.server www.otherdomain.name otherdomain.name IP.of.server www.anotherdomain.name anotherdomain.name IP.of.server www.yetanotherdomain.name yetanotherdomain.name 

…等等。


更新:

当然,ErikA说的是完全正确的。 服务器不需要修改hosts文件; 只有在需要testing而没有正确的DNSlogging的情况下,或者如果要覆盖它们以将fe连接到testing服务器而不是生产testing服务器时,它才是有用的。

您需要使用主机文件的唯一原因是,如果您没有正常运行的DNS环境,或者您需要临时覆盖某些DNS名称以进行testing。

使用名称虚拟服务器不需要修改主机文件。

IP条目应该是Apache正在监听的。 所以如果你有<VirtualHost 1.2.3.4:80> ,你的主机条目应该从1.2.3.4开始。

如果你正在听你的所有接口,那么幸运的是你! 你可以select一个! 而127.0.0.1将工作得很好。

至于右边的部分,它必须与你在地址栏中input的内容相匹配。 所以,如果你想能够在你的地址栏中inputwww.example.com ,并且发生了什么事情,那么你的hosts文件中就需要这个名字,告诉你的计算机这个IP的含义。 如果stream量到达那里,Apache只能处理redirect; 因此主机文件条目。

我相信我不需要说这只适用于开发环境。 主机IP地址映射应由DNS服务器完成,而不是静态文件。