Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为aws EC2中docker上运行的node.js服务器设置https_Node.js_Amazon Web Services_Docker_Amazon Ec2_Https - Fatal编程技术网

如何为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做任何事情,因为我的应用程

我有一个停靠的node.js/express应用程序在aws ec2实例容器上运行。现在,我的应用程序正在aws route 53托管的域名上运行。当我转到域名时,使用的协议是http。如何为aws EC2中docker上运行的node.js服务器设置https

这就是我到目前为止所做的

  • 我已经在我的ec2实例上设置了一个负载平衡器,目标是https端口433
  • 我拥有aws证书管理器的证书,域名为*.example.com。由美国焊接学会发布
  • 我是否需要使用docker做任何事情,因为我的应用程序正在通过docker访问。它是否需要任何https启用配置
  • 这就是我被卡住的地方。从中可以看出,我需要在服务器中提供一份证书副本,以便https与我的服务器协同工作

  • 我在哪里能买到这本书?所以我可以把它放在我的服务器上。我需要这样做吗
  • 我的aws证书管理器中的证书是否与证书颁发机构颁发的任何其他证书相同?如果是,如何查看https加密中使用的私钥和公钥

  • 我是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());