具有 ELB 源 HTTP 502 的 CloudFront Distribution(错误网关)

具有 ELB 源 HTTP 502 的 CloudFront Distribution(错误网关)

我有一个与自定义源 ELB(带有 EC2 实例)连接的 CloudFront Distribution。执行请求时会返回响应curl https://xxx.cloudfront.net/atlassian-connect.jsonHTTP/1.1 502 Bad Gateway

HTTP/1.1 502 Bad Gateway
Content-Type: text/html
Content-Length: 587
Connection: keep-alive
Server: CloudFront
Date: Sun, 29 May 2016 14:32:18 GMT
Age: 23
X-Cache: Error from cloudfront
Via: 1.1 fb7ff691963d3e3600808dccbe4422d2.cloudfront.net (CloudFront)
X-Amz-Cf-Id: HymCU2TweM0e6O4bDhluvDOj0gd2BoAqCnDtVyTOZBz2wOIYHN-Qhg==

当直接向 ELB 发送请求(绕过 CloudFront 分发)时,我能够获得预期的响应:

curl  -kv https://xxx.eu-central-1.elb.amazonaws.com/atlassian-connect.json

尝试调整一些云端分发选项后,我无法让它工作。

答案1

您服务器上的 SSL 证书在此配置下不可用。

您正在使用 curl 绕过验证,但 CloudFront(足够明智)没有提供这样的绕过机制。

您的证书必须匹配任何一个源主机名或者Host:原始请求中的标头(如果您已将标头列入白名单以Host:转发到原点)。

如果您的证书不包含任何与源域名或主机标头中的域名匹配的域名,CloudFront 将向查看器返回 HTTP 状态代码 502(错误网关)。

...并且,它必须是当前有效的、非自签名的,并且具有正确构建的信任链:

如果源服务器返回过期的证书、无效的证书或自签名证书,或者源服务器以错误的顺序返回证书链,则 CloudFront 将断开 TCP 连接,返回 HTTP 错误代码 502,并将 X-Cache 标头设置为来自 cloudfront 的错误。

引文来自http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecureConnections.html

答案2

如果问题不是证书问题(就像我的情况一样),那么它可能与未将标头传递到源有关。在AllViewer设置源请求策略CloudFront 行为设置中的选项(见图),502 Bad Gateway 错误就消失了。

在此处输入图片描述

源请求策略值进一步解释如下:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html

相关内容