在 mac os x (mavericks) 上为 nodejs 打开端口

在 mac os x (mavericks) 上为 nodejs 打开端口

我正在本地运行一个 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

启动您通常使用的localhost127.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。

相关内容