【发布时间】:2019-04-19 22:29:54
【问题描述】:
我有一个在 AWS 上的节点 8.11.1 上运行的系统。有一个功能可以将日志写入另一台服务器。此函数接受它记录的请求对象。
我的问题在实际 POST 尝试期间出现,给我以下错误:
错误:写入 EPROTO 139746875082624:错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知协议:../deps/openssl/openssl/ssl/s23_clnt.c:827:
我看不出我的代码有什么问题。
为什么会发生错误,我能做些什么来解决它?
这是函数内部的代码:
const https = require('https');
try
{
const postData = "New log finished " + JSON.stringify(request, null, 2);
const options =
{
hostname: LOG_DOMAIN,
port: LOG_PORT,
path: '/',
method: 'POST'
};
const req = https.request(options);
req.on('error', (e) =>
{
console.error("ERROR writing logs: " + e);
});
req.write(postData);
req.end();
}
catch (e)
{
console.log(e);
}
LOG_DOMAIN 和 LOG_PORT 是传递给函数的变量。
【问题讨论】:
-
LOG_PORT 的值是多少?
-
@AravindVoggu 很好的问题。 LOG_DOMAIN 和 LOG_PORT 是传递给函数的变量。我已经更新了原始帖子以反映这一点。
-
是的,我正在寻找“价值”:)。 httpS 使用 443 端口,http 只使用 80 端口。如果 LOG_PORT 值为 80,而您尝试使用 httpS,则会收到类似这样的错误。您可以检查并确认 LOG_PORT 设置为 443 吗?同时发布 LOG_DOMAIN 的值,以防万一。
-
@AravindVoggu 我正在发布到保存日志的 ELK 服务器,并且我使用的端口不是 443。为了我的组织的安全目的,我不愿发布实际域。也就是说,我是否无法在 443 以外的端口上安全发布?域需要另一个端口,但我不知道 Node 模块是否仅限于该端口。
-
我会与我们的平台团队核实,看看是否有任何相关日志。 @AravindVoggu 非常感谢您的宝贵时间!