用于 PHP 托管的 AWS CloudFront
Posted
技术标签:
【中文标题】用于 PHP 托管的 AWS CloudFront【英文标题】:AWS CloudFront for PHP hosting 【发布时间】:2021-03-23 20:51:22 【问题描述】:我是 AWS 新手,在理解 CloudFront 时遇到了一些困难。 我从一个 EC2 实例开始,其中包含 nginx、mysql 和公共文件夹中的一些 php 文件,以向世界公开 API。 然后我被告知 CloudFront 可用于保护实例免受恶意攻击。 我认为 CloudFront 需要一个弹性负载均衡器。 所以我创建了一个 ELB,另外一个 EC2 实例(总共两个 EC2 实例),创建了一个“目标组”,将这两个 EC2 实例分组。 我还创建了一个 S3 存储桶,CloudFront 似乎需要它,尽管我认为我不需要它,因为我的应用程序没有任何静态内容。 现在通过互联网搜索,一般的想法似乎是 PHP 文件应该存在于 EC2 实例的 EBS 中,而不是 CloudFront S3 存储桶中,因为 PHP 文件需要执行。 (而且 S3 不能执行任何文件)
在这种情况下,我是否需要将我的 PHP 文件部署到两个 EC2 实例? 如何让 EC2 实例指向同一个数据库,以便所有数据都保存在一个位置?目前,每个 EC2 实例都在自己的 EBS 存储中拥有自己的 MySQL 数据库。 端到端的请求流程是怎样的? 例如 客户端点击 CloudFront。 CloudFront 与 ELB 对话。 ELB 与我的一个 EC2 实例对话。 EC2 实例连接到通用 MySQL 数据库并获取数据。 响应数据以相反的顺序返回。我理解这个正确吗?
【问题讨论】:
您应该查看 Elastic Beanstalk,它将处理自我修复、扩展环境所需的所有 AWS 服务。运行第一个应用程序后,您可以深入了解设置并熟悉组件。 【参考方案1】:我认为 CloudFront 需要一个弹性负载均衡器。
使用 CF 不需要 ELB,但它简化了一些事情,例如在 CF 和您的服务器之间使用 HTTPS。
我需要将我的 PHP 文件部署到两个 EC2 实例吗?
是的,但这不是“手动”完成的。相反,它通常通过使用用户数据(或自定义 AMI)和 Auto Scaling 组来完成。所以你必须阅读这些主题如何做到这一点。
EC2 实例在自己的 EBS 存储中拥有自己的 MySQL 数据库。
您的数据库应该在您的网络服务器之外。如果您想自托管它,那么它将是专用实例。如果您想使用托管解决方案,那么您可以将您的 MySQL 迁移到 RDS MySQL。
端到端的请求流程是怎样的?
如你所述。
【讨论】:
再次感谢!你摇滚。 @KoreanDude 没问题。很高兴答案很有帮助:-)以上是关于用于 PHP 托管的 AWS CloudFront的主要内容,如果未能解决你的问题,请参考以下文章
使用 CloudFront 和目录重定向的 AWS S3 静态网站托管