无法通过互联网访问 Node.JS
Can't Access Node.JS over internet
我正在尝试通过 Internet 访问一个简单的节点。js/express 应用程序,但我终究无法弄清楚为什么它不起作用。我可以使用 http://localhost:3000 and http://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
您需要转发该端口或建立隧道才能在 Internet 上使用它。默认情况下,端口被阻止。问题不是服务器没有监听问题是从外部无法发现它。
- 要转发端口,将转发规则添加到您的路由器[More info]
- 对于隧道,您可以使用
ngrok
通过这样做,您可以连接到位于 http://<your_external_ip>:<forwarded_port>
的服务器
我终于明白了!这与我在不支持发夹 (see point 2 in this Whosebug answer) 的路由器上测试 LAN 内部连接有关。只需在局域网外的设备上访问应用程序即可。
我正在尝试通过 Internet 访问一个简单的节点。js/express 应用程序,但我终究无法弄清楚为什么它不起作用。我可以使用 http://localhost:3000 and http://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
您需要转发该端口或建立隧道才能在 Internet 上使用它。默认情况下,端口被阻止。问题不是服务器没有监听问题是从外部无法发现它。
- 要转发端口,将转发规则添加到您的路由器[More info]
- 对于隧道,您可以使用
ngrok
通过这样做,您可以连接到位于 http://<your_external_ip>:<forwarded_port>
我终于明白了!这与我在不支持发夹 (see point 2 in this Whosebug answer) 的路由器上测试 LAN 内部连接有关。只需在局域网外的设备上访问应用程序即可。