使 `http-server` 在网络上可见

Making `http-server` visible across the network

运行 npmhttp-server 有时会启动可从同一网络上的(移动)设备访问的服务器。

> http-server
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:8080
  http://10.0.1.7:8080
  http://123.456.78.90:8080
Hit CTRL-C to stop the server

有时会启动一个只能从同一桌面看到的服务器。

> http-server
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:8080
  http://10.0.1.7:8080
Hit CTRL-C to stop the server

我如何使用 http-server 来启动从同一网络上的任何设备都可见的 Web 服务器? http://10.0.1.7:8080 的存在本身应该表明服务器在网络上是可见的,不是吗? 为什么第三个地址http://123.456.78.90:8080只是偶尔出现。两次发射完全相同。

当然,所有这些都遵循npm install -g http-server

更新 1:

http-server -a 0.0.0.0 是默认值。 (因此无需指定。)

更新二:

使用

python3 -m http.server --bind 0.0.0.0

更 predictable/reliable,但是必须在 ifconfig 的输出中四处走动才能找到 npmhttp-server 很好地显示的 IP .

在您计算机的 IP 后跟端口下,与您的计算机处于同一网络中的任何人都应该始终可以使用它。

第三个地址,我想,出现是因为当时你同时连接到两个本地网络,所以http服务器可以在那个IP上使用——这也是你电脑的IP,但是在第二个网络中。

简而言之:

  • http://127.0.0.1:8080 是用于从运行它的机器内部连接到服务器的 IP。
  • http://10.0.1.7:8080 和任何后续 IP 是用于从同一网络中的任何设备连接到服务器的 IP。 IP 的数量与您连接到的本地网络的数量一样多。

这与 npm 无关,这只是网络的工作方式。 Python 的 http 服务器不会为您列出 IP。

让我们尝试排除一些明显的情况:

  • 您收到什么错误消息?您是否在浏览器中看到连接超时页面?
  • 您的手机 phone 是否连接到与 http 服务器计算机相同的路由器?
  • 您的手机 phone 的 IP 是多少? (我可以在我的路由器中看到它)
  • 您没有在其他设备上使用任何 vpn,是吗?
  • 你在本地调用是否看到正确的结果?
  • 你能从你网络中的任何设备 ping http 服务器机器吗?
  • 您是否尝试使用其他端口,例如 80?