是否可以在没有负载均衡器的情况下将 Amazon Elastic Beanstalk 与 SSL (HTTPS) 结合使用?

问题描述 投票:0回答:5

从现在开始,我的应用程序需要安全连接(HTTPS)。我验证了大多数在 Amazon Web Services Elastic Beanstalk 上添加安全连接 (https) 的教程都使用 Elastic Load Balancer 作为隧道。

就我而言,我正在运行单个实例,实际上我不需要负载均衡器。如何在没有弹性负载均衡器的情况下向我的实例添加安全连接?这可能吗?

我使用运行 PHP 7.0 Elastic Beanstalk 的 64 位 Amazon Linux 2017.03 v2.4.4。

amazon-web-services ssl amazon-ec2 amazon-elastic-beanstalk elastic-load-balancer
5个回答
3
投票

编辑

您也可以使用 CloudFront 来实现此目的。这也将允许您使用认证管理器的认证。请记住在弗吉尼亚北部地区创建它们。

警告

CloudFront
Elastic Beanstalk
之间的数据仍将通过
http
交换,因为您的容器不支持
https
enter image description here

您还需要更改以下设置:

  • 允许的 HTTP 方法下,您至少需要选择

    GET, HEAD, OPTIONS
    ,但很可能您还需要 POST/PUT allowed http methods

  • 您不希望 CloudFront 缓存您的结果,因此您需要将

    Cache Policy
    设置为 Managed-CachingDisabled enter image description here

  • 您还希望将所有请求的标头、cookie 和查询字符串传递到

    Origin
    ,即您的
    Elastic BeanStalk Container
    。为此,您需要将
    Origin Request Policy
    设置为 Managed-AllViewer enter image description here


0
投票

这绝对是可能的。这是来自 AWS 使用 Apache 的示例

基本步骤是:

  1. 在服务器上启用 SSL
  2. 获取证书颁发机构 (CA) 签名的证书。出于测试目的,您可以创建自签名证书。这是如何使用 openssl 执行此操作的示例

0
投票

https
可以在没有负载均衡器的情况下使用代理服务器进行配置,根据您的情况(使用 Amazon Linux 2+ 的 php)应该是
nginx
。我创建了一个
gist
,用于在 EBS
 中配置 
https
,它适合免费套餐🎉🎉🎉,但适用于 java。您可以在此处查看更多示例,但首先要找到您正在使用的代理服务器(apache 或 nginx),因为配置会相应变化。有关更多信息,请参阅反向代理配置


0
投票

是的,这很有可能。鉴于 Cloudfront 符合免费套餐资格,并且比 ELB 便宜得多,Route 53 托管区域与使用 ACM 公共证书启用 SSL 的 Cloudfront 的组合应该是更好、更便宜的解决方案。为单实例 Beanstalk 实例购买 ELB 是一种过度杀戮,并且可能不是最具成本效益的解决方案。以下链接提供了实现此目的可以遵循的步骤。 https://www.memunicinsights.in/ui/public/blog?postId=71903


-1
投票

当前 aws 文档适用于旧的 amazon Linux,因此它们无法工作。

这是你应该做的:

  1. 在安全组中开放443端口
  2. 在服务器上添加您的证书和私钥文件。您可以使用 .ebextensions 来实现。
  3. 在服务器上的 /etc/nginx/conf.d 中创建 nginx conf 文件,并使其监听端口 443 并使用您的证书文件来加密连接。

在 proxy_pass 中添加您的应用程序(127.0.0.1:your_port)

您可以使用 ssh 创建 nginx conf 文件,也可以在应用程序的根文件夹中添加 .platform/nginx/conf.d 并在其中添加配置文件。

如果您喜欢更详细的解释,请看这里: https://youtu.be/zTXS3a67-9c

© www.soinside.com 2019 - 2024. All rights reserved.