在我们使用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 。那么来自其他网络的客户端如何访问服务器呢?
答案 0 :(得分:0)
您可以在路由器上使用端口转发功能将router_ip:port
转发至local_ip:port
,以便您可以外部访问
答案 1 :(得分:0)
仅仅因为您通过localhost连接到本地实例并不意味着它也不会通过IP公开。 Localhost基本上表示不解析任何IP,只需循环回这台计算机,但您的节点服务器仍将部署到实际的IP地址。尝试查找计算机的IP地址并通过而不是localhost连接到节点服务器,您将发现您仍然可以与服务器通信。
在部署到云服务或任何其他托管服务时,您将获得与该实例关联的IP地址,该IP地址将用于解析。特别是Heroku会为你设置很多域空间和端口转发过程。