使用AWS服务即时创建子域以在S3上托管站点

时间:2013-08-08 14:42:55

标签: php api amazon-web-services amazon-s3 amazon


INFO:我正在开发一个用PHP构建的应用程序,它可以帮助用户创建HTML模板并在web上发布。由于模板是静态的,我想用亚马逊S3将它们存储为它可以托管静态网站,并为application.br/>

提供良好的基础设施

QUERY:我在将其发布到网络时遇到问题。我希望模板在我的域名上作为子域名发布,例如:我拥有www.ABC.com,我要求用户命名模板,如果他将其命名为mysite,我将他的模板发布为mysite.ABC.com(类似于所有用户)。现在,我可以使用putObjectFile将模板存储在S3存储桶中aws s3 api,但我不知道如何创建一个子域(动态)并在该域上发布它。(我想为用户自动化该过程)。另外,我可以使用API​​将广告设为hosting static website吗? 早些时候,我使用cpanel和cpanel API允许我们创建域并使用内容对域进行FTP,我不清楚如何在这里实现它。

研究:迄今为止我取得的成功是,我使用 S3控制台托管了一个网站。使用AWS服务我已将文件移至{ {1}}名称与用户的子域名相同。我现在想要将桶端点更改为子域。

参考: This网站做同样的事情,他们创建了一个类似结构的目录,并在网上发布网站。我不知道他们是否在亚马逊上托管它,但我想要实现类似的东西。希望我很清楚并得到一些指导。

感谢您的关注

1 个答案:

答案 0 :(得分:3)

前段时间我研究了类似的场景,但由于S3的限制,我无法使用S3。

要在自定义域或子域上的S3上托管静态网站,您需要创建一个名称与该域匹配的存储桶。而且由于每个S3帐户限制为100个存储桶,因此您只能在一个帐户中托管这么多域或子域。

根据您描述的用例,我怀疑S3限制也会迫使您找到另一种解决方案。

就我而言,解决方案是设置一个EC2实例,在重写它们之后代理对S3的请求。例如,如果有人要求:

http://mysite.abc.com/file.html

通过我们的EC2服务器,其中请求被重写并转发到S3,如:

http://ourbucket.s3.amazonaws.com/mysite.abc.com/file.html

<强>更新

您可以使用多个代理服务器,但我建议使用nginx,因为它在我们的案例中运行良好。要开始使用,请查看以下nginx文档:

http://wiki.nginx.org/HttpRewriteModule
http://wiki.nginx.org/HttpProxyModule