kun*_*foo 6 amazon-s3 amazon-ec2 amazon-web-services
我在s3上为我的网站运行静态托管.例如.www.somedomain.com指向S3桶.
我的api有一个子域api.somedomain.com,但处理跨域问题一直很烦人.我想映射www.somedomain.com/api/... - > api.somedomain.com/...但是没有完全重定向(301),因为我希望能够发布.
我知道Cloudfront允许这种行为,但由于我不需要CDN,因此它有点过分.
我已经获得了使用301重定向的路由规则,但无论如何要配置s3将我的请求传递给ec2?谢谢!
要解决这个问题,你需要做的就是改变范式。在您的 EC2 实例上,只需与您的 Web 应用程序分开运行一个反向代理(例如 varnish 或 nginx),将http://www.somedomain.com/api/ *的流量路由到 Web 应用程序(您甚至可以重写请求 url 以删除“/api”前缀)和所有其他流向 S3 的流量。配置 nginx 或 varnish 来执行此操作非常简单(几个小时,而不是几天)。
然后将您的 www.somedomain.com DNS 记录切换为指向您的 ec2 实例而不是 S3。
用于清漆的无绒 VCL 示例可实现此目的:
backend s3 {
.host = "s3.amazonaws.com";
.port = "80";
}
backend app {
.host = "localhost";
.port = "8080";
}
sub vcl_recv {
if (req.url ~ "^/api/.*") {
set req.backend = app;
set req.url = regsub(req.url, "^/api", "");
set req.http.Host = "api.somedomain.com"; /* If your web app cares about host */
}
else {
set req.backend = s3;
}
}
Run Code Online (Sandbox Code Playgroud)
此后,如果您愿意,您可以随意使用,例如使用路由 53 来检查您的 ec2 实例的运行状况,并在其发生故障时将 DNS 查找故障转移到您的 s3 存储桶,以及配置自定义缓存规则等。实现您想要的行为。
归档时间: |
|
查看次数: |
1640 次 |
最近记录: |