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

时间:2020-08-29 03:16:38

标签: php node.js ssl xampp

我已经从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上运行MYSQL和PHP,端口设置为1337。在我的调制解调器中,我已将DMZ设置为计算机/服务器的内部IP地址。当我尝试通过Internet访问我的域时,出现错误。 (假定我的Node JS服务器没有发送任何数据,ERR_EMPTY_RESPONSE)。

现在,当我使用地址栏进入网站的https版本时,它会出现警告,然后重定向到我的XAMPP服务器。该端口未在地址栏上设置,因此我不确定为什么将其重定向到XAMPP服务器。

我想知道为什么我的SSL不起作用,为什么当我放置https时将其重定向到XAMPP服务器而不使用NodeJS服务器?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

注意:您可以跳过server_name,而只需在每个配置中添加转发端口。这样,您的xampp可以有一个转发到1337的端口,而对于快递服务器则有另一个端口。

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