我远离我的家庭服务器(OpenSuse 15.1),其中包含我需要访问的数据库。由于我不想进入这里的原因,我想在同一台机器上运行一个 Node.js 应用程序。我有一个具有以下端口转发规则的 OpenWRT 路由器:
config redirect
option target 'DNAT'
option src 'wan'
option dest 'lan'
option proto 'tcp'
option src_dport '3000'
option dest_ip '192.168.7.7'
option name 'NodeTranq-0'
option dest_port '3000'
/etc/init.d/firewall reload
我通过 ssh 编辑应用程序并保存编辑,重新启动防火墙。然后我运行该应用程序,它宣布它在端口 3000 上运行一个网络服务器。然后我从我的远程计算机(在 Firefox 68.1.0esr(64 位)上)尝试我的静态 WAN 地址和端口 3000,我希望得到 URL由我的 Node 应用程序获取。我的 Node 应用程序是 app.js,包含:
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
我还没有检查任何其他防火墙,但会检查(我认为没有)。连接被拒绝
Unable to connect
Firefox can't establish a connection to the server at <server ip>:3000.
关于尝试什么的任何其他想法?
虽然我对 node.js 配置了解不多,但根据您的设置,您的应用程序仅在侦听仅
127.0.0.1
用于环回访问的内容:仅从服务器到自身。因此,您的应用程序无法从远程访问,包括从 LAN 访问。您应该更改 node.js 配置并输入:
这是INADDR_ANY地址,这意味着应用程序现在将侦听所有接口,并将接受到它拥有的任何地址的连接,包括到的 DNATed 流量,
192.168.7.7
并且仍然包括127.0.0.1
配置为像以前一样在本地访问它的任何本地应用程序。