我正在为https网站设置ELB,并且有关于端口configuration的问题…
现在我在ELB上有这个端口configuration:
而在我的实例,我有这个Apacheconfiguration:
显然它正在工作,但这是正确的方法吗?
感谢您的帮助
席琳
PS:当我开始configurationELB时,我指示443转发到443,但是接着我不得不回答奇怪的问题以进行身份validation。
问题中所述的配置不起作用,因为它创建了一个永无止境的重定向:443(ELB)转发到80(Apache)转发到443(ELB)转发到80(Apache)转发到443(ELB)等。
所以,我修改了ELB配置,使其具有:
当我创建了侦听器443(HTTPS)转发到443(HTTPS)时,我没有得到回答关于认证的问题。 当我看ELB的描述,我可以看到“后端身份验证:禁用”
健康检查在HTTPS:443上完成
(我还修改了实例安全组:只有负载平衡器可以访问端口80和443上的实例)
更新:
另一种解决方案是在实例上只打开端口80:
而是使用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其他有关健康检查的解决方案
AWS有关X-Forwarded-Proto的文档: http : //docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html#x-forwarded-proto
这是一个有效的方法来做到这一点。 您可以让ELB处理SSL终止。
在一些合规情况下,整个路径必须一直加密到实例。 如果这不适用于你,那么你不必做任何改变。
你的配置是相当不错的。按照CélineAussourd的答案,它会循环之间的ELB到Apache所以克服这个问题添加重写规则在Apache配置。
RewriteCond%{HTTPS}关闭