质疑来自于我的另一个问题如果我将 localhost 设置为我的路径,它就可以工作。但如果我给出我的系统IP,它就不起作用。
127.0.0.1 映射到我的 /etc/hosts 中的 localhost。我需要将我的 IP 映射到本地主机吗?不改变吗?
它们不是一样的吗?
答案1
某些服务被配置为仅侦听本地主机 IP 地址。
一个例子是 MySQL 数据库 - 您希望在同一服务器上运行的 PHP 应用程序连接到它,但不希望任何外部服务甚至外部黑客进行连接。通过将 MySQL 配置为仅接受本地主机地址(127.0.0.1
例如)而不接受服务器的真实 IP 地址(10.x.x.x
例如),您可以减少受到损害的机会。
所以,回答你的问题 - 是的,它们是不同的。
localhost
被赋予网络中的IP地址127.0.0.0
并被赋予虚拟环回网络设备lo
。该设备存在于所有系统上,无论它们是否安装了物理网络设备(例如 WiFi 或以太网)。未连接到任何网络的系统将具有此环回设备,从而具有地址127.0.0.0
。该名称localhost
只是解析为该 IP 地址并在/etc/hosts
.
你的真实的为网络设备分配IP地址(例如10.xxx)。这通常是物理网络设备(WiFi 或以太网),尽管高级设置tun
或tap
设备也可以使用它们。同样,名称解析(例如www.example.org
到10.0.1.1
)可以在 DNS 中配置/etc/hosts
或设置为使用 DNS。
答案2
127.0.0.1
是 localhost
,它是当前机器的地址,通过环回接口访问(而不是通过网络适配器 - 即使系统中没有网络芯片,这也可以工作)。
您从路由器获得的 IP 是另一回事:它是允许网络上的其他计算机找到您的地址。好吧,你能在同一台机器上也使用该 IP,但它的工作方式与以前不同:它会出去到路由器并再次进入(我在这里简化,但这是总体思路)。
如果您连接到互联网,您还可以从 ISP 获得另一个 IP - 世界各地其他计算机可以通过该 IP 找到您。然而,这两者至少指的是同一个网络适配器(eth0
或无线卡或其他什么)。localhost
是不同的。
操作系统、服务器等...从 访问时可能会有不同的行为localhost
。您通常没有为此设置防火墙,并且许多本地服务都有一个localhost
仅用于与应用程序通信的接口。很多时候,您会希望通过首先将其连接为localhost
仅侦听来测试您的网络服务器,这样您就可以检查它是否正常工作,但其他人则不能。然后,您可以重新配置以侦听外部 IP 地址并开始为网站提供服务(如果一切仍然有效,请再次测试)。
答案3
当您访问 时localhost
,您的/etc/hosts
文件会告诉您的计算机不要再查找并将您重定向到您自己的计算机。当您访问本地IP地址时,您的计算机会要求路由器获取数据,然后路由器会指向您的计算机。