端口转发不适用于 Nodejs 应用程序

Port forwarding not working for Nodejs application

我是 运行 我在端口 9000 上的 Nodejs 应用程序。我希望可以从 public IP 地址访问该应用程序。

我去了我的路由器配置并做了:

我的 Nodejs 应用程序在 localhost:9000 上仍然是 运行,但是当我转到

mypublicipaddress:9000

我知道这个网站无法访问。

我也试过 netsh 命令:

netsh interface portproxy add v4tov4 listenport=9000 connectport=9000 connectaddress=192.168.1.12

这没有抛出任何错误消息,但这也不起作用。

I went to my router config and did: [...]

My Nodejs application is still running on localhost:9000

这意味着您已将 Node.js 服务器绑定到计算机上的环回接口,并试图从路由器访问它,这是不可能的。尝试将服务器绑定到路由器可访问的 IP 地址或将其绑定到本地计算机上的所有 IP 地址(即 0.0.0.0::)。

例如:

const http = require('http');
const server = http.createServer((req, res) => { res.end('It works') });
server.listen(9000, '0.0.0.0');

至于 netsh 命令,我认为您还应该将 listenaddress 设置为您网络上的机器地址(或 0.0.0.0)。此外,connectaddress 必须设置为 127.0.0.1:

netsh interface portproxy add v4tov4 listenport=9000 connectport=9000 connectaddress=127.0.0.1 listenaddress=192.168.1.12