我正在本地运行一个 node.js 应用程序,并希望将其提供给外部世界进行演示。它在端口 3000 上运行。
我已将node
防火墙添加到允许传入连接,但仍然无法从外部打开到端口 3000 的连接。但它在本地可以工作(即 localhost:3000)。
答案1
步骤 1. macOS 防火墙
System preferences -> Security & Privacy -> Firewall -> Firewall Options… -> "node" should have "Allow incoming connections"
将 Node 服务器公开到网络。
步骤 2. 使用正确的 IP 地址启动 Node
启动您通常使用的localhost
或127.0.0.1
用于开发的 Node 服务器时,这可防止服务器暴露。当您想要将服务器暴露给网络时,您应该使用 IP 地址0.0.0.0
。
暴露服务器时要小心。非常容易且危险将开发 Node 服务器暴露给网络(例如咖啡馆)。不法分子可以在网络上发现您的服务器并打开您的网站(例如)http://192.168.0.100:3000
。如果您的服务器以开发模式运行,并且可能已禁用身份验证,那么不法分子可以轻松“登录”并浏览您的产品/代码以及所连接数据库中的数据。
步骤 3. 在路由器上设置端口转发
在路由器的网络界面中,找到转发端口并设置一些端口(例如 42000)以映射到您计算机的端口为 3000 的内部网络地址。
现在,您应该可以通过互联网通过路由器的公共 IP 地址和端口 3000 访问计算机上的 Node 服务器。
(您的计算机和路由器之外可能还有更多层。)
答案2
我尝试过各种方法,但迄今为止最简单的方法是使用恩格罗克。
brew install --cask ngrok
ngrok
# That gave the instructions...
#
# Sign up for an account: https://dashboard.ngrok.com/signup
# Install your authtoken: https://dashboard.ngrok.com/get-started/your-authtoken
#
# Once i followed the instructions (took 2mins) I did...
ngrok http 3000
# And that was it, i could access
# my http://localhost:3000 local server
# from anywhere in the world.
注意:我使用的是 Mac。您可以获取适用于其他平台的 ngrok。