rlc*_*ral 10 amazon-s3 cors cloudflare
我试图让Cloudflare充当S3上托管文件的CDN,这样任何人都无法直接访问这些文件.例如:
S3桶: cdn.mydomain.com.s3.amazonaws.com
CDN(Cloudflare): cdn.mydomain.com
我想要的是能够访问cdn.mydomain.com/file.jpg(Cloudflare)但不能访问cdn.mydomain.com.s3.amazonaws.com/file.jpg(S3).
现在我在Cloudflare上配置了一个指向我的存储桶的CNAME,以及以下CORS:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
如果我尝试通过S3或CDN访问任何文件,我将被拒绝.如果我公开一个文件(也就是被授予的每个人),我可以通过S3和CDN访问该文件.
我曾试图改变AllowedOrigin用*.mydomain.com,但没有运气.
rlc*_*ral 15
我找到了解决方案.CloudFlare支持中心的文章没有提到这一点.
您必须编辑存储桶策略,而不是CORS.而不是允许您的域,如该文章所说,有权访问存储桶,您必须允许CloudFlare IP.作为参考,以下是IP列表:https://www.cloudflare.com/ips
以下是与CloudFlare一起使用的存储桶策略示例:
{
"Sid": "SOME_STRING_ID_HERE",
"Effect": "Allow", // or deny
"Principal": {"AWS": "*"}, // or whatever principal you want
"Action": "s3:GetObject", // or whatever action you want
"Resource": "arn:aws:s3:::cdn.mydomain.com/*", // or whatever resource you want
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"103.21.244.0/22",
"103.22.200.0/22",
"103.31.4.0/22",
"104.16.0.0/12",
"108.162.192.0/18",
"131.0.72.0/22",
"141.101.64.0/18",
"162.158.0.0/15",
"172.64.0.0/13",
"173.245.48.0/20",
"188.114.96.0/20",
"190.93.240.0/20",
"197.234.240.0/22",
"198.41.128.0/17",
"199.27.128.0/21"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |