繁体   English   中英

在代理后面托管静态网页的 AWS S3 公共存储桶

[英]AWS S3 public bucket hosting static webpage behind a proxy

我正在尝试使用 S3 访问一些可用的网页,并且使用如下所示的 url 可以正常工作: http : //my-crazy-bucket.s3-website-us-east-1.amazonaws.com

事情是.. 我需要使用 express 将这些页面的 url 隐藏在 javascript 编写的代理应用程序后面。 在使用弹性豆茎代替 S3 之前,我能够做到这一点。 但是当我尝试将这些静态页面从 EB 迁移到 S3,并使用给定 s3 存储桶的代理 url 访问它时。 这导致了以下错误:

404 Not Found
Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: my-proxy-url.com
RequestId: some stuff...
HostId:  some more stuff...

我希望看到我的疯狂斗,而不是my-proxy-url.comBucketName这个错误的。

我确实在存储桶配置中将 CORS 配置为宽松的,如下所示:

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>https://my-proxy-url.com</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
   <MaxAgeSeconds>3000</MaxAgeSeconds>
   <AllowedHeader>Authorization</AllowedHeader>
 </CORSRule>
</CORSConfiguration>

但问题仍然存在。

你们认为我需要任何额外的 S3 配置还是问题出在我的代理中(即使它在指向旧弹性 beanstalk 实例中托管的相同静态页面之前工作)?

不是 CORS 问题。

在发送出站请求之前,您必须在代理内部更改(重写)传入请求的 HTTP Host:标头,以便 S3 了解有问题的存储桶是my-crazy-bucket.s3-website-us-east-1.amazonaws.com

仅将请求发送到 S3 是不够的。 它需要寻址到正确的存储桶,S3 通过查看传入的Host:存储桶端点或存储桶名称的标头来确定是哪个存储桶。

没有看到您的代理代码,我不能更具体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM