【问题标题】:Port forwarding not working for Nodejs application端口转发不适用于 Nodejs 应用程序
【发布时间】:2019-08-16 16:06:35
【问题描述】:

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

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

我的 Nodejs 应用程序仍在 localhost:9000 上运行,但是当我去时

mypublicipaddress:9000

我知道无法访问此站点。

我也试过 netsh 命令:

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

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

【问题讨论】:

  • 可能是您的 PC 或服务器的防火墙阻止了它
  • 我通过入站规则在防火墙中启用了端口 9000,但这也无济于事

标签: node.js portforwarding


【解决方案1】:

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

我的 Nodejs 应用程序仍在 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

【讨论】:

  • 我收到:Error: listen EADDRINUSE: address already in use 0.0.0.0:9000。当我尝试运行我的 Nodejs 服务器时。但是,我仍然可以在任何其他端口中运行它
  • app.listen(9000,()=>{}) 也可以。添加0.0.0.0 会出现上述错误
  • 您需要弄清楚端口 9000 上正在监听的内容并停止它。如果要将 Node.js 服务器绑定到所有 IP 地址,也请删除 netsh 端口代理。
  • 我将端口更改为 8000,现在正在使用app.listen(8000,'0.0.0.0',()=>{})。当我执行localhost:8000 时,服务器运行良好,但是当我将其更改为mypublicip:8000 时,它不再工作了。我还为端口 8000 启用了端口转发,就像我在上面为路由器中的 9000 所做的那样
  • 另外,我在防火墙中为端口 8000 创建了一个入站规则,以防出现问题,但也没有解决问题。
猜你喜欢
  • 1970-01-01
  • 2014-10-03
  • 2014-05-25
  • 2020-10-23
  • 1970-01-01
  • 2014-08-24
  • 2016-07-27
  • 2013-03-12
相关资源
最近更新 更多