当我们使用app.listen(port)
时使用Express,应用程序位置是localhost:port/
在本地机器中,我完全理解我们如何使用在同一台机器上运行的本地浏览器来访问此地址。即使在同一网络上运行的其他客户端也可以访问服务器
据我所知,localhost
或127.0.0.1
IP可以在同一网络中的相同或其他机器上访问。
但是如果我们像Heroku一样部署到云而不添加像app.listen(port, IP_ADDRESS)
这样的IP选项而是使用app.listen(port)
,那么唯一不同的是PORT编号(process.env.PORT),但IP仍然是localhost。那么来自其他网络的客户端如何访问服务器?
您可以在路由器上使用端口转发将router_ip:port
转发到local_ip:port
,允许您在外部访问它
仅仅因为您通过localhost连接到本地实例并不意味着它也不会通过IP公开。 Localhost基本上表示不解析任何IP,只需循环回这台计算机,但您的节点服务器仍将部署到实际的IP地址。尝试查找计算机的IP地址并通过而不是localhost连接到节点服务器,您将发现您仍然可以与服务器通信。
部署到云服务或任何其他托管服务时,您将获得与该实例关联的IP地址,该IP地址将用于解析。特别是Heroku会为你设置很多域空间和端口转发过程。