Prestashop 错误 使用 AWS CloudFront 后重定向过多



我必须使用以这种方式配置的 CloudFront 分配为我的域"farmtrust.tn"创建 SSL 证书

  1. 将源协议策略设置为仅 HTTP

  2. 要TLSv1.1_2016的最低源 SSL 协议

  3. 已将源更改为我的 EC2 实例公有 DNS

  4. 设置查看器协议策略以将 HTTP 重定向到 HTTPS

  5. 最后,为指向 CloudFront 分配 URL 的"farmtrust.tn"添加别名记录。

注意:用户与 CloudFront URL 之间的连接使用 HTTPS,CloudFront 与源之间的连接使用 http。

后来,当我尝试使用 curl 命令向网站"https://farmtrust.tn"发出 GET 请求时,我注意到 HTTP 302 响应。

$ curl -IX GET https://farmtrust.tn 
HTTP/2 302 
content-type: text/html; charset=utf-8
content-length: 0
location: http://farmtrust.tn/ 
date: Mon, 23 Dec 2019 16:16:52 GMT
server: Apache/2.4.29 (Ubuntu)
x-cache: Hit from cloudfront
via: 1.1 87ba4da6c7513242d551023ab57badbf.cloudfront.net (CloudFront)
x-amz-cf-pop: MAN50-C1
x-amz-cf-id: BKFMLi_leVgG0Fniw0ZHYlp4fR8T2xJkhWsUs2x1nZRgr-ZnQ6eX-A==
age: 492

我已经进一步调查,并在路由中观察到以下循环。

https://farmtrust.tn —> CloudFront 网址 —> EC2 Origin —>WebServer —> http://farmtrust.tn —> CloudFront 将其重定向到"https://farmtrust.tn" —> ...

现在,当我尝试访问该网站时,我得到了ERR_TOO_MANY_REDIRECTS

使用Prestashop,有一些配置将这些请求重定向到预定义的URL。它位于表ps_configuration和ps_shop_url

我想知道我是否可以以某种方式停止此重定向或我该怎么办。

此致敬意

从我掌握的信息来看,您的源服务器似乎需要 HOST 标头值作为 farmtrust.tn,CloudFront 正在发送您在源配置中定义的 HOST 标头(EC2 DNS 名称(。

您可以尝试将 CloudFront 中的 HOST 标头列入白名单并使缓存失效,看看这是否有效?

这从下面的 curl 输出(farmtrust.tn 目前指向 EC2(是有意义的:

curl -vko /dev/null http://farmtrust.tn/fr/ -H "Host: ec2-35-180-3-55.eu-west-3.compute.amazonaws.com" 
Always 302 
curl -vko /dev/null http://farmtrust.tn/fr/
Returns 200

我遇到了类似的问题,以下是我为解决它所做的 -

1(我们不能在云前和源之间有http,在查看器和云前之间不能有https,这将失败并出现证书不匹配错误。 因此,请先制作您的EC2 SSL,使用CertBot获取免费的SSL证书。

2( EC2 为 SSL 后,使用 HTTP 和 HTTPS 侦听器创建负载均衡器 ELB。

3(在您的云前端指向ELB作为原点。在 53 号公路中指向云前。

最新更新