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

Posted

技术标签:

【中文标题】是否可以在没有负载均衡器的情况下使用带有 SSL (HTTPS) 的 Amazon Elastic Beanstalk?【英文标题】:Is possible to use Amazon Elastic Beanstalk with SSL (HTTPS) without a Load Balancer? 【发布时间】:2018-02-28 17:44:04 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

目前 aws 文档适用于旧的 amazon linux,因此它们无法正常工作。

这是你应该做的:

    在安全组中打开端口 443 在服务器上添加您的证书和私钥文件。您可以为此使用 .ebextensions。 在服务器上的/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

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review @legoscia 谢谢你的建议,我改了。【参考方案2】:

https 可以在没有负载均衡器的情况下使用代理服务器进行配置,您的情况(使用 Amazon Linux 2+ 的 php)应该是 nginx。我创建了一个gist for configuring https in EBS,它适合免费套餐???,但适用于 java。您可以看到更多examples here,但首先要找到您正在使用的代理服务器(apache 或 nginx),因为配置会相应变化。欲了解更多信息,请参阅Reverse proxy configuration

【讨论】:

【参考方案3】:

编辑

您也可以为此使用 CloudFront。这也将允许您使用来自 Certification Manager 的认证。请记住在 N-Virginia 地区创建它们。

警告

CloudFrontElastic Beanstalk 之间的数据仍将通过http 进行交换,因为您的容器不支持https

您还需要更改以下设置:

允许的 HTTP 方法下,您至少需要选择 GET, HEAD, OPTIONS,但很可能您还需要 POST/PUT

您不希望 CloudFront 缓存您的结果,因此您需要将 Cache Policy 设置为 Managed-CachingDisabled

您还希望将所有请求的标头、cookie 和查询字符串传递给Origin,即您的Elastic BeanStalk Container。为此,您需要将 Origin Request Policy 设置为 Managed-AllViewer

【讨论】:

【参考方案4】:

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

基本步骤是:

    在服务器上启用 SSL 获取证书颁发机构 (CA) 签名的证书。出于测试目的,您可以创建自签名证书。这是一个example,介绍了如何使用 openssl 进行操作。

【讨论】:

请验证***.com/questions/46310436/… Smauel Neff 的回答是正确的。当使用像 Beanstalk 这样的托管资源同时使用像 ELB 这样的托管服务来处理 SSL 加密时,这无疑是 AWS 的最佳实践。但是,有可能不遵循这种做法并自己管理它。只需为您添加更多配置。

以上是关于是否可以在没有负载均衡器的情况下使用带有 SSL (HTTPS) 的 Amazon Elastic Beanstalk?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk - NodeJS:在没有 Beanstalk 负载均衡器的情况下从 Letsencrypt 获取证书 SSL

没有负载均衡器的 EC2 实例上的 AWS SSL - NodeJS

是否可以在没有负载均衡器的情况下使用 AWS Fargate?

没有自定义域的 AWS 上的 SSL 应用程序负载均衡器

是否可以为 AWS 公共 DNS EC2 实例设置 SSL

是否可以将负载均衡器添加到没有负载均衡器的现有 AWS Elastic Beanstalk 应用程序?