gpt4 book ai didi

node.js - 如何为以下设置安装 SSL(React 前端 + Nodejs 后端 + 自定义域 Heroku)

转载 作者:行者123 更新时间:2023-12-03 13:49:37 24 4
gpt4 key购买 nike

有关我的设置的一般信息

目前我正在使用 构建一个 Web 应用程序和一个为此 Web 应用程序提供数据的 API。这两个应用程序都托管在heroku.com上并相互独立运行。我从不同的托管提供商处购买了自定义域并使用 heroku custom domain将 DNS 指向我的网站的选项。

Technical details about my setup

  • NodeJS server: Express
  • NodeJS version: v10.15.0
  • React version: v16.2.0
  • Custom domain: www.tabbs.nl
  • Heroku domain: tabbs-web-app.herokuapp.com

我遇到的问题

我已经深入研究了大量文档和教程,以便为 React/NodeJS 设置 SSL,但找不到关于如何为我的设置设置 SSL/安全性的像样教程。

我已经读过的教程:

我想实现什么目标?

我想要实现的目标是在 React Web 应用程序(前端)和 NodeJS API(后端)之间建立安全连接,以便它们之间的所有数据都是加密且安全的。另外,我希望我的自定义域(由与 Heroku 不同的托管提供商购买)是安全的并强制使用 https。

如有任何问题或其他信息,请随时询问!

最佳答案

您尝试过在node中使用https模块吗?

你可以这样做:

var express = require('express');
var https = require('https');
var http = require('http');
var app = express();

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

express() 返回的应用程序实际上是一个 JavaScript 函数,旨在作为回调传递到 Node 的 HTTP 服务器来处理请求。这使得您可以轻松地为应用程序的 HTTP 和 HTTPS 版本提供相同的代码库,因为应用程序不会继承这些版本(它只是一个回调。

如果您使用的是 create React 应用程序,请打开终端并输入“npm run build”。这将创建一个包含所有静态文件的构建文件夹。

现在返回 Node 后端服务并添加以下内容:

var express = require('express');
var path = require('path');
var https = require('https');
var http = require('http');
var app = express();

const options = {
key: fs.readFileSync("/srv/www/keys/my-site-key.pem"),
cert: fs.readFileSync("/srv/www/keys/chain.pem")
};
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

app.use(express.static(path.join(__dirname, 'build')));

app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

如果您使用 React Router 来处理 Web 应用程序的路由,那么您将修改 GET 请求,如下所示:

var express = require('express');
const path = require('path');
var https = require('https');
var http = require('http');
var app = express();
const options = {
key: fs.readFileSync("/srv/www/keys/my-site-key.pem"),
cert: fs.readFileSync("/srv/www/keys/chain.pem")
};
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

app.use(express.static(path.join(__dirname, 'build')));

app.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

关于node.js - 如何为以下设置安装 SSL(React 前端 + Nodejs 后端 + 自定义域 Heroku),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54008965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com