如何为aws EC2中docker上运行的node.js服务器设置https
我有一个停靠的node.js/express应用程序在aws ec2实例容器上运行。现在,我的应用程序正在aws route 53托管的域名上运行。当我转到域名时,使用的协议是http。如何为aws EC2中docker上运行的node.js服务器设置https 这就是我到目前为止所做的如何为aws EC2中docker上运行的node.js服务器设置https,node.js,amazon-web-services,docker,amazon-ec2,https,Node.js,Amazon Web Services,Docker,Amazon Ec2,Https,我有一个停靠的node.js/express应用程序在aws ec2实例容器上运行。现在,我的应用程序正在aws route 53托管的域名上运行。当我转到域名时,使用的协议是http。如何为aws EC2中docker上运行的node.js服务器设置https 这就是我到目前为止所做的 我已经在我的ec2实例上设置了一个负载平衡器,目标是https端口433 我拥有aws证书管理器的证书,域名为*.example.com。由美国焊接学会发布 我是否需要使用docker做任何事情,因为我的应用程
我是devops和aws的新手。如果你能从一开始就分步列出你的答案,我将不胜感激。我有一个停靠的node.js/express应用程序,运行在aws ec2实例容器上,可由aws route53托管的域名访问。从这里开始,我如何将默认连接协议从http更改为https?弹性负载平衡器很好,可以在请求(x-forwarded-proto)中附加一个额外的请求头,它告诉我们请求来自哪个协议。我们可以在Express中间件中使用它来执行重定向:
function forceHttps(req, res, next) {
const xfp =
req.headers["X-Forwarded-Proto"] || req.headers["x-forwarded-proto"];
if (xfp === "http") {
res.redirect(301, `https://${hostname}${req.url}`);
} else {
next();
}
}
server.use(forceHttps);
或者使用npm包
嘿,谢谢你的回答,但是试了一下,什么也没发生。当我
console.log(xfp)
时,它返回undefined
,当我尝试用https在浏览器()上键入域名时,它说无法访问该站点。你能给我一个关于如何在停靠的nodejs/express应用程序上配置https的没有任何配置的新运行的ec2实例的分步指南吗。非常感谢。
const express = require('express');
const forceHttps = require('@crystallize/elasticloadbalancer-express-force-https');
const server = express();
server.use(forceHttps());