在 NodeJS 中安装 SSL(没有发送任何数据,ERR_EMPTY_RESPONSE)

Posted

技术标签:

【中文标题】在 NodeJS 中安装 SSL(没有发送任何数据,ERR_EMPTY_RESPONSE)【英文标题】:Installing SSL in NodeJS (didn't send any data, ERR_EMPTY_RESPONSE) 【发布时间】:2020-12-17 22:27:14 【问题描述】:

我已经下载了我从 app.zerossl.com 收到的 SSL 证书,并将它放在与我的主节点脚本相同的目录中;并已使用此代码进行安装。

var fs = require('fs');

let options = 
 cert: fs.readFileSync(__dirname + '/certificate.crt'),
 ca: fs.readFileSync(__dirname + '/ca_bundle.crt'),
 key: fs.readFileSync(__dirname + '/private.key')
;

我运行服务器的配置如下:

var express = require('express');
var app = express();
var server = require('https').createServer(options, app);
var io = require('socket.io')(server);

现在我在 XAMPP 上运行 mysqlphp,端口设置为 1337。在我的调制解调器中,我已将 DMZ 设置为我的计算机/服务器的内部 IP 地址。当我尝试通过 Internet 访问我的域时,会出现错误。 (没有发送任何数据,ERR_EMPTY_RESPONSE)假设来自我的 Node JS 服务器。

现在,当我使用地址栏访问我的网站的 https 版本时,它会出现一个警告,然后重定向到我的 XAMPP 服务器。地址栏上没有设置端口,所以我不确定它为什么会重定向到 XAMPP 服务器。

我想知道为什么我的 SSL 不工作,为什么当我放置在 https 中时它会重定向到我的 XAMPP 服务器而不是使用 NodeJS 服务器?

【问题讨论】:

你是如何在 xampp 中设置端口的,你能提供 XAMPP>apache>conf>httpd.conf 输出来查看你的端口和 IP 是如何设置为监听的,确保之前编辑 IP 和端口分享?另外,首先尝试不使用 SSL 的 express 服务器,以确保您已正确完成外部连接。然后就可以调试 SSL 部分了。 XAMPP>apache>conf>httpd.conf 设置为侦听端口 1337。服务器在没有 https 和 http 模块的情况下工作。当我将其更改为 https 模块时,它不起作用,当我通过 https 访问它时,xampp 服务器加载而不是节点 js 服务器。 啊,我现在只是将 xampp 服务器重定向到网站的 http 版本。 =_= 我不知道当我尝试在节点 js 服务器上安装 https 时会发生什么,因为 https 版本无论如何都会进入 XAMPP 服务器。 推荐使用 nginx 之类的东西,因为设置需要托管两台服务器和一个公共 IP 入口点。您可以在提供的答案中查看更多详细信息。 【参考方案1】:

由于您正在运行两台服务器和一个公共入口点,因此您需要使用 nginx 之类的东西才能从您的外部 IP 访问两者。

XAMPP 可能优先于 express 服务器,这就是为什么要去那里。

注意:如果您使用的是 HTTPS,请确保添加路由器规则以使用端口 443。

这里有一些关于如何将两台服务器合二为一的文档。在这种情况下,它是两个网站,但您可以更改它以使其适用于一个网站和一个后端服务器,因为这专门用于路由到不同的端口。

注意:您可以跳过 server_name 并在每个配置中添加端口转发。这样,您可以将一个端口转发到您的 xampp 的 1337,并为您的 express 服务器设置另一个端口。

https://webdock.io/en/docs/how-guides/how-configure-nginx-to-serve-multiple-websites-single-vps#:~:text=If%20you%20are%20using%20a,to%20host%20all%20your%20domains.

【讨论】:

你是对的,XAMPP 优先于 express 服务器。

以上是关于在 NodeJS 中安装 SSL(没有发送任何数据,ERR_EMPTY_RESPONSE)的主要内容,如果未能解决你的问题,请参考以下文章

怎么在node.js中安装less

vue.js是啥?为啥要在nodejs中安装

在 AWS Linux 中安装 SSL 后 HTTPD 停止

在 wamp 服务器中安装 SSL:httpd-ssl.conf 中的错误

在 ubuntu 17.04 中安装 Nodejs v8.2.1

无法使用 nodejs 在 linux 中安装 dashing-js