我必须使用通过这种方式配置的CloudFront发行版为我的域“ farmtrust.tn”创建SSL证书
将原始协议策略设置为“仅HTTP”
TLSv1.1_2016的最小起源SSL协议
将源更改为我的EC2实例公共DNS
设置查看器协议策略以将HTTP重定向到HTTPS
最后为“ farmtrust.tn”添加一个指向CloudFront分发URL的别名记录。
注意:用户与CloudFront URL之间的连接使用HTTPS,而CloudFront与Origin之间的连接使用http。
后来,当我尝试使用curl命令获取对网站“ https://farmtrust.tn”的请求时,我注意到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 URL —> EC2来源—> WebServer —> http://farmtrust.tn —> CloudFront将其重定向到“ https://farmtrust.tn” — — ...
现在,当我尝试访问该网站时,我得到ERR_TOO_MANY_REDIRECTS
使用Prestashop,有一些配置会将这些请求重定向到预定义的URL。位于表ps_configuration和ps_shop_url
中我想知道是否可以以某种方式停止此重定向,或者应该怎么做。
最诚挚的问候,
答案 0 :(得分:0)
从我掌握的信息来看,您的原始服务器似乎需要HOST标头值作为farmtrust.tn,而CloudFront正在发送您在原始配置(EC2 DNS名称)中定义的HOST标头。
您可以尝试在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 :(得分:0)
我遇到了类似的问题,下面是我解决该问题的方法-
1)我们在Cloudfront和原始服务器之间不能有http,在查看器和Cloud Front之间不能有https,这将失败并显示证书不匹配错误。 因此,请先设置您的ec2 ssl,然后使用certbot获得免费的ssl证书。
2)一旦ec2是ssl,就创建一个带有http和https侦听器的负载均衡器elb。
3)在您的云前端将elb作为原点。并在53号路线上指向云锋。