使用 localhost/127.0.0.1 而不是机器自己的 IP 地址是否重要?

使用 localhost/127.0.0.1 而不是机器自己的 IP 地址是否重要?

我在运行 Amazon Linux 的 Amazon AWS EC2 上,尽管这对答案可能并不重要。

假设我有三台主机,H1、H2、H3,其私有 IP 地址分别为 10.0.0.1、10.0.0.2 和 10.0.0.3。这可以在 /etc/hosts 文件中用以下行表示:

127.0.0.1   localhost localhost.localdomain
10.0.0.1    H1
10.0.0.2    H2
10.0.0.3    H3

在 php 代码中,我会根据对主机提供内容的隐性了解,运行 curl 来访问特定主机上的内容。我宁愿不关心我访问的特定主机是否是运行代码本身的主机,而只是访问 H1、H2 或 H3。我可以在每台主机上使用不同的 /etc/hosts 文件,将其私有 IP 地址的行更改为使用地址 127.0.0.1。但这真的很重要吗?如果我在所有机器上使用相同的 /etc/hosts 文件,是否会牺牲任何性能或功能?

对计算机自己的私有 IP 地址进行的网络访问是否真的会导致真正的“外部”流量,还是会被检测到并使用环回连接器(如 127.0.0.1)?接收请求的进程是否将原始地址视为计算机自己的私有 IP 地址,还是无论如何都会看到 127.0.0.1?

答案1

使用相同的hosts文件是可以的,并且不会对性能产生影响,如果您H1从连接到 ,流量将保持本地H1。但是,如果您连接到localhost/127.0.0.1,源 IP127.0.0.1也将是 ,但如果您连接到H1,源 IP 将是10.0.0.1(例如在 Apache 日志中)。

一个区别是:某些应用程序(尤其是 MySQL/MariaDB)在连接到 时会切换到使用 Unix 域套接字进行通信localhost,但在使用 时使​​用 IP 堆栈127.0.0.1或机器的实际 IP 地址或主机名。据说这会带来轻微的性能优势,但我从未对此进行过基准测试。

相关内容