繁体   English   中英

如何使用 https 在弹性 beantalk 中配置单个 ec2 实例

[英]How to configure single ec2 instance in elastic beanstalk with https

截至目前,拥有 https 的最简单方法是在弹性 beantalk 中使用负载均衡器,他们最近创建了一篇文章,内容如下。

您可以使用配置文件来配置将流量传递到您的应用程序以终止 HTTPS 连接的代理服务器。 如果您想在单实例环境中使用 HTTPS,或者如果您将负载均衡器配置为在不解密的情况下传递流量,这将非常有用。

要启用 HTTPS,您必须允许端口 443 上的传入流量流向运行 Elastic Beanstalk 应用程序的 EC2 实例。 为此,您可以使用配置文件中的 Resources 键将端口 443 的规则添加到 AWSEBSecurityGroup 安全组的入口规则。

以下代码段向 AWSEBSecurityGroup 安全组添加了一个入口规则,该规则将端口 443 开放给单个实例环境的所有流量:

.ebextensions/https-instance-securitygroup.config

Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0

他们要求您将另一个弹性 beanstalk 配置文件包含在 your.ebextensions 文件夹中,可以在此处找到https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-nodejs.html

将私钥内容替换为用于创建证书请求或自签名证书的私钥的内容。

我已经完成了在 ebextensions 文件夹中创建的配置文件中添加私钥内容和公共证书的步骤。 部署工作,但当我 go 到弹性豆茎 url 它不是 https。

您链接的 nginx 配置只会为端口 443 添加另一个侦听器。它不会自动将 http 流量重定向到 https 端点。 你可以试试你的应用程序的 https 版本,看看它是否有效?

您可以覆盖端口 80 的配置,但更简单的解决方案可能是在您的应用程序代码中处理它。 如果您查看端口 443 的配置,它将向您的 node.js 应用程序发送X-Forwarded-Proto header。

我认为这篇博文可能会对您有所帮助: http://blog.lookfar.com/blog/2017/07/19/how-to-https-all-the-things-in-node/

  app.use(function(req, res, next){
    if(req.header('x-forwarded-proto') !== 'https'){
        res.redirect('https://' + req.header('host') + req.url);
    }else{
        next();
    }
  })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM