我们希望将所有请求转发到domain.com/foo
Cloudfront 前端的 S3 Bucket。我们的想法是,当内容从 S3/Cloudfront 加载时,使用我们的域。我已将 Apache 设置为将代理请求反向为/foo
:
<Location /foo>
RequestHeader set X-Forwarded-Proto "https"
ProxyPassReverseCookiePath / /foo
ProxyPass http://bar.cloudfront.net/
ProxyPassReverse http://bar.cloudfront.net/
</Location>
然而,当我点击时,domain.com/foo
我得到了403 Forbidden
来自 Cloudfront 的一个。
我尝试添加标题RequestHeader set Host "bar.cloudfront.net"
,页面加载并且我看到s3
存储桶中的内容,但是域显然是 CDN 域。
更新:
我将 Apache 配置中的 cloudfront URL 替换为 s3 bucket 的公共 URL,它工作正常,同时保留了主机名。所以我相信这证实了这是 Cloudfront 的问题。
我在 CloudFront 上将我们的域名添加为 CNAME。然后使用 将 设置RequestHeader set Host
为我们的域名/foo
。这样可以保留主机名,但会导致400
CloudFront 出错。
答案1
Cloudfront 需要了解它将要接收的所有主机标头。您可以在 Cloudfront 中添加 domain.com 作为 CNAME 条目。这不会导致流量进入 cloudfront,但它会将该主机标头标识为您的特定配置相关。