当通过SSL/TLS终止的负载平衡器进行访问时,AEM会将用户重定向回http

描述

环境

  • Experience Manager

问题/症状
当通过SSL终止的负载平衡器(或SSL终止的CDN)访问AEM时,AEM会将https重定向回http。

负载均衡器处的 SSL 终止意味着 SSL 证书已安装在负载均衡器中。最终用户通过https://访问网站,而后端使用http://访问Dispatcher/Web Server和AEM。

分辨率

原因

不同的负载平衡器会发送不同的标头,以通知后端系统 SSL​上游终止。 例如,Amazon ELB 使用标头“X-Forwarded-Proto: https”

​​​​​​

要解决此问题:

I.更新Dispatcher /clientheaders配置

请参阅负载均衡器的文档,了解它设置了哪个标头来通知下游系统它终止了 SSL。为简单起见,在这些步骤中,我们假定正确的HTTP标头为“X-Forwarded-Proto:https"

  1. 登录到 Dispatcher 服务器。
  2. 打开调度程序场.any配置。
  3. 将标头添加到/clientheaders部分。

如果您使用的调度程序没有负载平衡器,或者您的负载平衡器或代理无法设置 X-Forwarded-Proto 标头,则可以在web服务器或调度程序级别设置。 如果您使用 Apache HTTP 服务器,然后更新 HTTPS虚拟主机​使用本指令:

1 RequestHeader  set X-Forwarded-Proto  "https"

二、更新标头配置:

  1. 转到 http://host:port/system/console/configMgr/org.apache.felix.http.sslfilter.SslFilter,并以管理员身份登录。
  2. 已设置 SSL​将标题转发到 X-Forwarded-Proto。
  3. 已设置 SSL​将值转发到 https.
  4. 单击“保存”。

注释:

没有用于告诉后端使用哪种协议的反向代理标头的标准。 但是,以下是已知标准:

  • Amazon ELB(弹性负载平衡器)使用“X-Forwarded-Proto:https”标头。
  • Amazon Cloudfront CDN使用“X-Cloudfront-Proto:https”标头。

三、更新 Jetty OSGi 配置(AEM 6.3 及更高版本)

在 AEM 6.3 及更高版本上,需要额外的配置:

  • 登录 http://aem-host:port/system/console/configMgr/org.apache.felix.http.
  • 启用设置启用代理/负载平衡器连接,并保存。

在此页面上