无法通过互联网访问Node.JS

时间:2018-12-06 11:05:45

标签: node.js express firewall nat

我正在尝试通过Internet访问一个简单的node.js / express应用程序,但是我一生都无法弄清为什么它不起作用。我可以使用http://localhost:3000http://192.168.x.x:3000来访问它,但不能使用我的外部IP地址。

端口3000在我的路由器上处于打开状态(使用端口在线端口检查工具进行了双重检查),并且我在防火墙中添加了一个规则以允许端口(Windows 10)。

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, "0.0.0.0")

netstat似乎建议允许3000端口通过防火墙,对吧?

C:\WINDOWS\system32>netstat -n -a

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:3000            0.0.0.0:0              LISTENING

2 个答案:

答案 0 :(得分:1)

您需要转发该端口或建立隧道以通过Internet使用它。默认情况下,端口被阻止。问题不是服务器没有在听,问题是无法从外部发现。

  • 要转发端口,请将转发规则添加到路由器[More info]
  • 对于隧道,您可以使用ngrok

这样做可以连接到http://<your_external_ip>:<forwarded_port>上的服务器

答案 1 :(得分:0)

我终于弄清楚了这个问题!这与我在不支持发夹(see point 2 in this stackoverflow answer)的路由器上测试LAN内部的连接有关。只需在LAN以外的设备上访问应用程序即可达到目的。