节点 - 请求.js仅在服务器上重置错误

Node - Request.js ECONNRESET Error Only On Server

本文关键字:错误 服务器 请求 js 节点      更新时间:2023-09-26

我在服务器上有一个看起来像这样的脚本。

request = require('request');
require('longjohn');
request.post(
    { 
        url : 'https://example.com/api/thing/',
        form : {
            api_key : "blahblah",
            thing_id : 0
        },
        json : true
    },
    function(error, response, body){
        console.log(error, response);
    }
);
当我在本地运行它时,它运行

良好,但是当我在服务器上运行它时,我得到了这个。

{ [Error: read ECONNRESET]
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
__cached_trace__: 
[ { receiver: [Object],
   fun: [Function: errnoException],
   pos: 22969 },
 { receiver: [Object], fun: [Function: onread], pos: 14584 },
 {},
 { receiver: [Object], fun: [Function], pos: 19529 },
 { receiver: [Object], fun: [Function], pos: 49346 },
 { receiver: [Object],
   fun: [Function: _tickCallback],
   pos: 14030 },
 { receiver: [Object], fun: [Function], pos: 14031 },
 { receiver: [Object], fun: [Object], pos: 4502 },
 { receiver: [Object], fun: [Function], pos: 28039 },
 {},
 { receiver: [Object], fun: [Function], pos: 48679 },
 { receiver: [Object], fun: [Function], pos: 36057 },
 { receiver: [Object], fun: [Object], pos: 40546 },
 { receiver: [Object], fun: [Function], pos: 3570 },
 { receiver: [Object], fun: [Function], pos: 17260 },
 { receiver: [Object], fun: [Function], pos: 36440 },
 { receiver: [Object], fun: [Function], pos: 11960 },
 {},
 { receiver: [Object], fun: [Function], pos: 11634 },
 { receiver: [Object], fun: [Object], pos: 2292 },
 { receiver: [Object], fun: [Object], pos: 1738 },
 { receiver: [Object], fun: [Function], pos: 3238 },
 { receiver: {}, fun: [Function], pos: 121 },
 { receiver: [Object], fun: [Function], pos: 12854 },
 { receiver: [Object], fun: [Function], pos: 13365 },
 { receiver: [Object], fun: [Function], pos: 10114 } ],
 __previous__: 
 { [Error]
 id: 73,
 location: 'Readable.on (_stream_readable.js:679)',
 __location__: 'EventEmitter.on',
 __previous__: 
  { [Error]
    id: 60,
    location: 'ClientRequest.onSocket (http.js:1700)',
    __location__: 'process.nextTick',
    __previous__: [Object],
    __trace_count__: 2,
    __cached_trace__: [Object] },
 __trace_count__: 3,
 __cached_trace__: 
  [ [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    {},
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    {},
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object] ] } }

我不熟悉 tcp 套接字的细节。如果有人有任何想法或您需要更多信息,请告诉我。

我们的机架空间托管支持团队最终解决了这个问题 - 这是一个硬件配置问题。

看起来您的问题在防火墙和 负载均衡器。

此问题似乎是由 DNS 篡改引起的 防火墙。

如果我在 xxx-node-prod-1 上的/etc/hosts 文件中设置 IP 地址 因为 production.xxx.com xxx.xxx.xxx.xxx,一切都很完美。

当 curl 命令命中私有命令时出现问题 负载均衡器的 NAT IP。

我们使用硬件固件和LB进行此设置,他们这边的东西很糟糕。