首页 > 解决方案 > Node.js http 服务器崩溃并显示未知 IP 地址

问题描述

我正在运行 Node.js HTTP 服务器,突然显示以下消息,服务器崩溃:

更新的错误日志:(编辑后)

Uncaught exception in main server
{ Error: connect ETIMEDOUT 139.99.8.126:80
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14)
 code: 'ETIMEDOUT',
 errno: 'ETIMEDOUT',
 syscall: 'connect',
 address: '139.99.8.126',
 port: 80 }
Uncaught exception in main server
{ Error: socket hang up
at createHangUpError (_http_client.js:253:15)
at Socket.socketCloseListener (_http_client.js:285:23)
at emitOne (events.js:101:20)
at Socket.emit (events.js:188:7)
at TCP._handle.close [as _onclose] (net.js:497:12) code: 'ECONNRESET' }

这是我们未使用的外部 IP 地址。我试图用 grep 进入该 IP 地址的所有节点模块,但什么也没看到。似乎是一次黑客攻击,但我不知道从哪里开始寻找。任何帮助将不胜感激。我已经在防火墙中阻止了 IP 地址。

标签: node.js

解决方案


根据关于错误的node.js 文档说:

ETIMEDOUT(操作超时):连接或发送请求失败,因为连接方在一段时间后没有正确响应。通常由 http 或 net 遇到——通常表明 socket.end() 没有被正确调用。

您应该为错误创建一个处理程序,这样您的服务器就不会崩溃:

netSv.on('error', function (error) { 

   if( error.message.code === 'ETIMEDOUT' ){
      // mail the error with some additional data to you or do something with it
   }

})

推荐阅读