7

我正在为 https 网站设置 ELB,我对端口配置有疑问...

现在我在 ELB 上有这个端口配置:

  • 80 (HTTP) 转发到 80 (HTTP)
  • 443 (HTTPS) 转发到 80 (HTTP)

在我的实例上,我有这个 Apache 配置:

显然它正在工作,但它是正确的方法吗?

谢谢您的帮助

席琳

PS:当我开始配置 ELB 时,我指示 443 转发到 443 但后来我不得不回答奇怪的身份验证问题......

4

2 回答 2

15

问题中描述的配置不起作用,因为它创建了一个永无止境的重定向:443(ELB)转发到 80(Apache)转发到 443(ELB)转发到 80(Apache)转发到 443(ELB)等。

因此,我将 ELB 配置修改为:

  • 443 (HTTPS) 转发到 443 (HTTPS)
  • 80 (HTTP) 转发到 80 (HTTP)

当我创建侦听器 443 (HTTPS) 转发到 443 (HTTPS) 时,我没有回答有关身份验证的问题。当我查看 ELB 描述时,我可以看到“后端身份验证:已禁用”

健康检查在 HTTPS:443 上完成

(我还修改了实例安全组:只有负载均衡器可以访问80和443端口上的实例)

更新:

另一种解决方案是在实例上仅打开端口 80:

  • 80 (HTTP) 转发到 80 (HTTP)
  • 443 (HTTPS) 转发到 80 (HTTP)

但是要使用 X-Forwarded-Proto 来确定客户端是使用 HTTP 还是 HTTPS,并且仅当 X-Forwarded-Proto = http 时才转发到 HTTPS

Apache 示例:

<VirtualHost *:80>
    ...
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    ...
</VirtualHost>

该行RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker已添加,因此不会重定向 ELB 检查。有关健康检查的其他解决方案,请参阅https://serverfault.com/questions/470015/how-should-i-configure-my-elb-health-check-when-using-namevirtualhosts-and-redir

有关 X-Forwarded-Proto 的 AWS 文档:http: //docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html#x-forwarded-proto

于 2013-06-19T15:28:06.617 回答
0

这是一种有效的方法。您可以让 ELB 处理 SSL 终止。

在某些合规情况下,整个路径必须一直加密到实例。如果这不适用于您,那么您无需进行任何更改。

于 2013-06-18T20:51:21.733 回答