ECcube 使用负载平衡器时无法识别 HTTPS/SSL 时的响应,链接都变成 http

当 Web 服务器放置在负载平衡器上时,从负载平衡器到 Web 服务器的通信通常使用 HTTP 完成。

这本身没有问题,但即使从浏览器使用https://访问,EC-CUBE也无法原样识别HTTPS通信。

这是因为无法像往常一样获取到判断是否为HTTPS的服务器变量。

如果EC-CUBE无法识别SSL,会出现以下问题。

  1. 所有链接都变成 http://(重定向到 HTTPS 时很难注意到)
  2. 提交表单数据失败
  3. 未能付款
  4. 我无法在安全管理中勾选“强制 SSL”

EC-CUBE4系列用

安装 HTTPS 后,将以下描述添加到 apache 的 httpd.conf。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Port} !^443$
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule ^/(.*)?$ https://www.domeinname/$1 [R=301,NE,L]
</IfModule>

这将强制 HTTP 访问 HTTPS。
并在EC-CUBE 的index.php 开头附近添加如下描述。

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

HTTP_X_FORWARDED_PROTO 标头用于标识
客户端在连接到负载均衡器之前选择的协议(HTTP 或 HTTPS) 。

如果使用AWS负载均衡器,
则不会设置HTTPS环境变量,所以
在这里设置,
就可以在EC-CUBE4系统上安全使用HTTPS了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值