我正在尝试使用Amazon S3静态网站和Amazon EC2 nodejs服务器设置CloudFront。
我已按照以下步骤操作:
example.com
example.com
和api.example.com
颁发的ACM中创建证书example.com
和api.example.com
example.com.s3-website-AWS_REGION.amazonaws.com
创建的原点example.com
和api.example.com
添加了条目,别名为指向CloudFront分布。此后,我的https://example.com
已正确加载网页。现在,我也尝试为我的nodejs服务器设置CloudFront。
使用ec2-IP.AWS_REGION.compute.amazonaws.com
在CloudFront分配中添加了新来源。
为模式api.tutorezie.com/*
添加了所有TTL都设置为零的行为。
现在,当我尝试使用https://api.example.com
访问nodejs服务器时,我无法这样做并出现错误。我不确定自己在做什么错。
答案 0 :(得分:1)
您对CloudFront基于虚拟主机提供服务感到困惑,CloudFront并没有这样做,而是查看URI路径,例如:/ api / *等,然后根据路径行为匹配将请求转发到原始服务器。
在https://api.example.com和https://example.com中,它都与默认路径行为相匹配,并向S3发送请求。
可能的解决方案:
在CNAME中创建一个新的CloudFront并在此处添加api.example.com,并使用现有的证书和来源作为EC2实例,cloudfront不会向您收取创建分发费用。
如果否,则需要使用Lambda @ edge(Viewer Request / Origin Request(whitelisting HOST header))读取HOST标头,并根据api.example.com选择来源ec2或S3。或example.com。
根据您的要求,选项1应该很容易。