![Hosts 文件:多行具有相同的 IP 地址是否不正确?](https://linux22.com/image/4569/Hosts%20%E6%96%87%E4%BB%B6%EF%BC%9A%E5%A4%9A%E8%A1%8C%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E7%9A%84%20IP%20%E5%9C%B0%E5%9D%80%E6%98%AF%E5%90%A6%E4%B8%8D%E6%AD%A3%E7%A1%AE%EF%BC%9F.png)
一段时间以来,我一直像这样格式化我的主机文件。注意两行有相同的 ip:
e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com
我最近读到,别名应该合并在一行上:
e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com
但是,我不喜欢这种方法,因为您无法轻松注释掉某些别名或向特定别名添加注释,如下所示:
a.b.c.d foo.mydevsite.com # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com # myOtherSite on box 1
a.b.c.d ubuntuBox
e.f.g.h foo.myOtherSite.com # myOtherSite testing environment
到目前为止,这一切都运行良好;这有问题吗?
答案1
我发现这个帖子讨论了按照这些思路做一些事情。该线程非常坚持不要在/etc/hosts
文件中包含多行。
摘录-回复:/etc/hosts:两行具有相同的 IP 地址?
不,不会的。解析器在第一个解析处停止。有类似的东西:
127.0.0.1 localhost.localdomain localhost 127.0.0.1 somenode.somedom.com somenode
不会做你所说的事情。但有:
127.0.0.1 somenode.somedom.com somenode 127.0.0.1 localhost.localdomain localhost
会造成各种浩劫。包括转发。
我通常不会做你正在尝试的事情。如果您需要更多证据,手册页甚至会说不要这样做:
摘抄man hosts
本手册页描述了 /etc/hosts 文件的格式。该文件是一个简单的文本文件,它将 IP 地址与主机名关联起来,每个 IP 地址一行。对于每个主机,应在一行中包含以下信息:
IP_address canonical_hostname [aliases...]
话虽如此,如果您的主机名是 FQDN 并且它们不重叠,那么您可能可以安全地执行您正在执行的操作。请记住,如果存在任何重叠(例如上面线程中提到的内容),那么您可能会遇到解决问题。
答案2
我相信第三种方法效果很好;这有问题吗?
我总是这样做一点,但有一个潜在的问题,因为根据man gethostbyaddr
该系统调用可能会用来/etc/hosts
将 IP 地址与名称相关联。尽管更常见的情况是相反的(从名称获取地址),但请注意这一点,以防发生任何有趣的事情。
答案3
Apache 2.4 拒绝在我的 Unix 系统上启动。根本原因是 /etc/hosts 中的重复行。删除重复行后,我就可以启动网络服务器了。