![nodejs 没有在转发端口上接收请求](https://linux22.com/image/1449695/nodejs%20%E6%B2%A1%E6%9C%89%E5%9C%A8%E8%BD%AC%E5%8F%91%E7%AB%AF%E5%8F%A3%E4%B8%8A%E6%8E%A5%E6%94%B6%E8%AF%B7%E6%B1%82.png)
我正在尝试让我的路由器将对我的 noip 动态 dns 发出的请求转发到我的本地计算机,其中我有一个正在运行的 nodjs,等待端口 14555 上的请求。
我已经设置了 noip dns,以便在本地运行的 netcat 可以接收对端口 14555 的任何调用(即使用浏览器):
ncat -l -n -v -v -k -p 14555
Ncat: Version 5.59BETA1 ( http://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:14555
Ncat: Connection from xxx.xxx.xxx.xxx:56409.
GET /socket.io/?EIO=3&transport=polling&t=1430939580269-4 HTTP/1.1
Host: someDomain.ddns.net:14555
Connection: keep-alive
...
NCAT DEBUG: Closing connection.
Ncat: Connection from 84.167.116.141:56411.
然而,尽管这个调用似乎传递了所有信息并到达了我的计算机,但节点却没有监听它。它没有收到任何东西:
HTTP server listening at 0.0.0.0:14555/
我的接收服务器配置如下:
var self = this;
// Start the server
this.httpServer = http.createServer(function(req, res){
// Send HTML headers and message
res.writeHead(200,{ 'Content-Type': 'text/html' });
res.end('<h1>Hello Socket Lover!</h1>');
});
//Listen on the port for HTTP requests
this.httpServer.listen(cfg.port, '0.0.0.0');
console.log('HTTP server listening at 0.0.0.0:' + cfg.port + '/');
PS:这个问题最初是在服务器故障,但我被要求将其移到这里。
*编辑 1:我做了另一个实验,使用 nginx 监听端口 80 并转发端口 80,结果相同:调用到达本地计算机的端口 80,但 nginx 没有接收它。
答案1
我找到了解决方案。
事实证明,这是我的路由器的问题。
当从内部网络调用指向路由器本身的域时,“speedport W 732V”无法解析请求。
所以一切实际上都已经正常运行,我只需要从本地网络之外的设备进行检查。
由于这对我来说非常令人沮丧,所以我将这个问题留在这里,所以也许其他寻找答案的人会在这里找到帮助。