我正在尝试通过Internet访问一个简单的node.js / express应用程序,但是我一生都无法弄清为什么它不起作用。我可以使用http://localhost:3000和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
答案 0 :(得分:1)
您需要转发该端口或建立隧道以通过Internet使用它。默认情况下,端口被阻止。问题不是服务器没有在听,问题是无法从外部发现。
ngrok
这样做可以连接到http://<your_external_ip>:<forwarded_port>
上的服务器
答案 1 :(得分:0)
我终于弄清楚了这个问题!这与我在不支持发夹(see point 2 in this stackoverflow answer)的路由器上测试LAN内部的连接有关。只需在LAN以外的设备上访问应用程序即可达到目的。