配置为使用“localhost”的 Web 服务器在网络内无法访问

配置为使用“localhost”的 Web 服务器在网络内无法访问

什么会导致 Ubuntu Server 14.04 LTS 计算机在 Web 服务器配置中失去使用“localhost”的能力?如果我将“localhost”替换为计算机的静态内部 IP 地址 (192.168.0.70),则网络上的其他计算机可以访问该站点。如果我尝试使用“localhost”,则无法访问相同的请求(假设我使用的是http://192.168.0.70:8000两种情况都适用)。我已经使用 2 种不同的 Web 服务器技术复制了此问题,因此这不是 Web 服务器问题。'/etc/hosts' 文件包含 '127.0.0.1 localhost' 条目,我可以在相关机器上 ping 'localhost'。我运行了 ufw 防火墙并允许端口 8000 上的 tcp 流量。由于我可以使用 IP 配置从其他机器访问该站点,因此我知道这不是防火墙问题。

答案1

localhost 仅是环回。它是机器内部的、私有的,与任何其他机器上的 localhost 无关。如果您想在有线接口上提供服务,它必须在该接口上侦听。因此,您可以侦听该接口,或 *(全部),或者如果需要,可以侦听包含 localhost 的列表,以及有线接口。(在配置中,有时您输入一个 ip,有时您输入一个接口)

你也可以在 lsof 中看到它。这是一个监听所有内容的 Web 服务器:

root@webthingy # lsof -Pni | grep "TCP.*:80.*LISTEN"

apache2   26080     root    3u  IPv4 450401823      0t0  TCP *:80 (LISTEN)
apache2   26485 www-data    3u  IPv4 450401823      0t0  TCP *:80 (LISTEN)

这是一个监听一个列表而不是全部的 DNS 服务器(UDP 没有显示为 LISTEN,但这就是它们的含义):

root@dnsthingy:~ # lsof -Pni | grep named.*:53
named   13132  bind   20u  IPv4 13389831      0t0  TCP 127.0.0.1:53 (LISTEN)
named   13132  bind   21u  IPv4 13389833      0t0  TCP 10.2.0.2:53 (LISTEN)
named   13132  bind  512u  IPv4 13389830      0t0  UDP 127.0.0.1:53 
named   13132  bind  513u  IPv4 13389832      0t0  UDP 10.2.0.2:53 

相关内容