繁体   English   中英

是否可以在S3上按子域进行动态静态批量托管?

[英]Is it possible to do dynamic static mass hosting by subdomain on S3?

假设我需要托管1000个静态网站。 其中每个都是父域的子域:

foo.parent.com
bar.parent.com
baz.parent.com
...

由于每个AWS账户限制为100个存储桶,因此每个静态内容将位于父存储桶的文件夹中:

https://s3.amazonaws.com/parent.com/foo/index.html
https://s3.amazonaws.com/parent.com/bar/index.html
https://s3.amazonaws.com/parent.com/baz/index.html
...

有没有办法将每个子域指向正确的文件夹? 也许使用Route 53?

使用Apache,可以将所有子域自动重写到所需的文件夹中,如下所示:

RewriteCond %{HTTP_HOST} ^([^.]+)\.parent.com$ [NC]
RewriteRule ^(.*) folder/%1/

抱歉,目前无法使用。 域记录需要映射到名称完全相同的存储桶,并且存储桶限制为100。

您将需要使用多个AWS账户来获取1000个存储桶,但我不确定它们是否对此感到不满意。

可能更好地探索另一种方法,例如使用EC2实例托管1000个网站,并从s3提供大量的css / js / images等以减轻流量。

在这里停止阅读,而请参阅从AWS通配符域提供大量静态站点服务,该服务描述了如何使用单个S3存储桶,单个CloudFront发行版和Lambda @ Edge Origin Request触发器来完成此操作。


更新:最初发布此答案后不久,AWS放松了每个帐户100个存储桶的硬性限制,将其转换为默认限制,可以通过向AWS支持描述您的用例来增加该限制。

存储桶限制增加:您现在可以增加每个AWS账户的Amazon S3存储桶限制。 所有AWS账户的默认存储桶限制为100个存储桶,从今天开始,您现在可以通过访问AWS Service Limits请求其他存储桶。

https://aws.amazon.com/about-aws/whats-new/2015/08/amazon-s3-introduces-new-usability-enhancements/


单独使用S3,不会。

使用S3,在Route 53的重写帮助下,否-DNS不会重写路径。 曾经

结合使用S3和基于传入的Host:标头重写路径的代理...好,是的。 与您的Apache配置示例类似,您可以配置Apache以重写URL,然后将请求[P]代理(而不是重定向-代理)到S3,并重写路径。 Nginx或HAProxy或其他几种产品也可以做同样的事情,而且,如果代理或代理与存储桶位于同一区域,则EC2和S3之间不收取数据传输费用。 我用“主机名A”全天提供内容,使用HAProxy重写传入的Host:标头,从“存储名B”中获取内容,这正是S3期望从预期存储区中提供服务的内容。 奖励:使用我的证书在我的域上使用SSL。

或者...如果您不觉得那么冒险,可以使用CloudFront。 这消除了主机名与存储桶匹配的需要,并为您提供了与路径相关的其他灵活性。

当您指定CloudFront分配的来源时-Amazon S3存储桶或用于存储内容原始版本的自定义来源-现在,除了域名之外,您还可以指定目录路径。

http://aws.amazon.com/about-aws/whats-new/2014/12/16/amazon-cloudfront-now-allows-directory-path-as-origin-name/

对于您而言,这意味着为每个网站设置一个CloudFront分配,将其配置为使用适当的S3存储桶以及该存储桶中的路径。 (当然,您可以自动化)。

AWS本身不对发行版收取费用,因此这似乎有些理智。 每个AWS账户有200个CloudFront分配限制 ,但是 与S3中的100个存储桶限制不同, 此限制似乎是可以协商的默认限制,因为现在S3限制也是如此。

暂无
暂无

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

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