node.js - 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 文档说:
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
}
})
推荐阅读
- html - 我想将我的页面分为 2 列,并在 2 篇新闻文章上为我的 django 主页模板引导
- sql - 获取两周前星期六的日期
- javascript - 为什么构建 NextJS 后会有多个 script 标签?
- reactjs - 如何添加多个文件uisng reactjs
- node.js - 命令没有响应 discordjs mongoose
- docker - 如何在 nginx 中访问 GeoLite 数据库?
- c - Keil C51 在编译时不会为结构指针分配内存
- jenkins - Jenkins 2.304:无法监控可用交换空间
- regex - 用于匹配以 W(无空格)(大写)结尾的所有查询的正则表达式,还有另一个匹配以一位数字(无空格)结尾的所有查询的正则表达式
- flutter - Flutter Gitlab CI/CD 在 Windows 上构建失败 - 术语“flutter”无法识别