node.js - HTTPs 与用于 SPA 的expressjs staticFile

标签 node.js express https routes single-page-application

我一直在挖掘各种网站/教程,试图找到我的问题的答案。也许我误解了一些有关 HTTPS 的想法。

好了,言归正传…… 我使用指向index.html的staticFiles在express(4)上托管我的SPA前端应用程序:

const express = require('express'); 
const auth = require('http-auth');
const app = express();
const basic = auth.basic({
    file: `${__dirname}/login`
});

app.use(auth.connect(basic));

app.use(express.static(__dirname + '/dist'));

app.get('/*', function(req, res) {
    res.sendFile(path.join(__dirname + '/dist/index.html'));
});
app.listen(process.env.PORT || 8080);

但是它仅在 HTTP 上运行,我想使用 HTTPS 托管它(后端也使用 HTTPS 来处理其请求)。

我知道 HTTPS 需要某种加密,因此请求不会以纯文本形式发送,但前端托管的应用程序是否也需要这种加密?如果可以的话,如何实现?

谢谢大家!

最佳答案

好的做法是在代理下托管 Node.js 应用程序(例如 nginx,即 commonly used for this case ),因为如果没有 root 权限,则无法在 80/443 端口上启动 Node.js 应用程序(使用 sudo 是 security issue )。

考虑到这一点 - 这个代理是 https 设置的最佳方式。例如,这里是保护 nginx with letsencrypt under ubuntu 的分步教程。 。您可以找到适用于您的操作系统和其他 Web 服务器的类似教程。

关于node.js - HTTPs 与用于 SPA 的expressjs staticFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198382/

相关文章:

php - 在 PHP 中检测 HTTPS 请求

node.js - AWS Lambda HTTPS 请求 - 蓝图

javascript - 为什么我的数组被覆盖了?

node.js - 为什么异步函数在控制台中返回 Promise <pending> 错误

javascript - 无法在适当的时间调用域上的处置

java - 我如何在 WildFly 8 中获得更多可用的密码套件

javascript - 无法使用 Meteor 1.3 从 NPM 插入集合

node.js - 从 AWS Lambda 提供 zip 文件

javascript - Nodejs - Express res.download 发送异常后无法设置 header

node.js - 获取 Mongoose 中 3 个实体占实体总数的百分比?从 Mongoose 中获取总数