【问题标题】:Route HTTP request to HTTPS in AWS Load Balancer在 AWS 负载均衡器中将 HTTP 请求路由到 HTTPS
【发布时间】:2014-07-05 08:55:33
【问题描述】:

我们有 2 个使用 Nginx 和 Unicorn 运行 Rails 的 EC2 实例。我们在 EC2 中启动了负载平衡选项。接下来我们购买了一个 SSL 证书并让它在负载均衡器上运行。因此,现在我们的 url 为 https://app.mydomain.com 工作。我们从负载均衡器的侦听器中删除了 HTTP。现在,我们每次都需要以某种方式将任何传入请求的http://app.mydomain.com 路由到https://app.mydomain.com。关于我们如何实现这一目标的任何建议?

提前谢谢你。

【问题讨论】:

标签: ssl amazon-web-services amazon-ec2 load-balancing


【解决方案1】:

我有同样的情况,我通过以下方式解决它:

您需要保持负载平衡侦听端口 80 和作为节点运行的 ec2 实例,您可以将其配置为将任何 http 请求重定向到 https。

在我的情况下,我在我的 .htaccess 文件中使用这一行

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/status https://app.mydomain.com%{REQUEST_URI} [L,R]

这是我的情况,而 /status 同时负载平衡检查器检查实例运行状况。

【讨论】:

    【解决方案2】:

    ELB 设置X-Forwarded-Proto 标头,您可以使用它来检测原始请求是否为HTTP 并重定向到HTTPS。

    看看ELB docs

    【讨论】:

      【解决方案3】:

      您需要在您的 apache 或 nginx 文件中进行配置。使用此链接获取详细帮助。 https://serverfault.com/questions/67316/in-nginx-how-can-i-rewrite-all-http-requests-to-https-while-maintaining-sub-dom

      【讨论】:

      • SSL 不是在每个实例级别配置,而是在负载均衡器级别配置。因此,HTTP 请求并非每个 NGINX 都会在负载均衡器本身失败。
      猜你喜欢
      • 2022-12-05
      • 2018-06-30
      • 2017-10-21
      • 2015-01-22
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 2015-11-13
      • 2015-03-18
      相关资源
      最近更新 更多