【问题标题】:Is possible to use Amazon Elastic Beanstalk with SSL (HTTPS) without a Load Balancer?是否可以在没有负载均衡器的情况下使用带有 SSL (HTTPS) 的 Amazon Elastic Beanstalk?
【发布时间】: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。

【问题讨论】:

    标签: amazon-web-services ssl amazon-ec2 amazon-elastic-beanstalk elastic-load-balancer


    【解决方案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

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - 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

        基本步骤是:

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

        【讨论】:

        • Smauel Neff 的回答是正确的。当使用像 Beanstalk 这样的托管资源同时使用像 ELB 这样的托管服务来处理 SSL 加密时,这无疑是 AWS 的最佳实践。但是,有可能不遵循这种做法并自己管理它。只需为您添加更多配置。
        猜你喜欢
        • 2017-02-19
        • 1970-01-01
        • 2017-09-28
        • 2018-07-01
        • 2018-02-28
        • 2020-06-05
        • 2021-01-01
        • 2017-01-07
        • 2020-11-21
        相关资源
        最近更新 更多