php 使用AWS服务动态创建子域以在S3上托管站点

kd3sttzy  于 2023-02-28  发布在  PHP
关注(0)|答案(1)|浏览(172)
    • 信息:**我正在开发一个内置在php中的应用程序,它可以帮助用户创建HTML模板并将其发布到Web上。由于模板是静态的,我想到使用amazon S3来存储它们,因为它可以托管静态网站,并且具有良好的基础设施,可以访问www.example.com〉application.br/>
    • 查询:**将模板发布到Web时遇到问题。我希望将模板作为我的域中的子域发布,例如:我拥有www.example.com,我要求用户命名模板,如果他将其命名为mysite,我就将其模板发布为www.example.com(对所有用户都类似)。现在,我可以使用awss3api中的putObjectFile将模板存储在S3存储桶中,www.ABC.com我可以使用API将存储桶设置为hosting static website吗?mysite.ABC.com(similar for all users).Now,I can store the template in the S3 bucket using putObjectFile in the aws s3 api,but I am not sure how can I create a subdomain(on the fly) and publish it on that domain.(I want to automate the process for the user). Also,can I make the bucket as hosting static website using the API?

早些时候,我曾与cpanel和cpanel的API的允许我们创建域,并做一个FTP到域的内容,我不清楚我如何才能实现它在这里。

    • 研究:到目前为止,我所取得的成功是,我使用S3控制台**托管了一个站点。使用AWS服务,我将文件移动到与用户的子域同名的bucket。现在,我希望将存储区端点更改为子域。
    • 参考:**This网站也是这样做的,他们创建了一个目录一样的结构,并在网上发布网站。我不知道他们是否在亚马逊主机上,但我想实现类似的东西。希望我是明确的,并得到一些指导。

感谢您的关注

nue99wik

nue99wik1#

不久前我研究了一个类似的场景,但由于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

相关问题