用于PHP托管的AWS CloudFront

3 人关注

我是AWS的新手,在理解CloudFront方面有一些困难。 我一开始用一个EC2实例,在公共文件夹里有NGINX、MySQL和一些PHP文件,向全世界公开API。 然后我被告知CloudFront可以用来保护该实例免受恶意攻击。 我想CloudFront需要一个Elastic Load Balancer。 所以我创建了一个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数据库并获取数据。 响应数据按相反顺序返回。
  • 我对这一点的理解是否正确?

    1 个评论
    你应该看看Elastic Beanstalk,它将负责所有AWS服务的自我修复和扩展环境。一旦你有了你的第一个应用程序的运行,你就可以深入设置并熟悉这些组件了。
    php
    amazon-web-services
    amazon-s3
    amazon-ec2
    amazon-cloudfront
    KoreanDude
    KoreanDude
    发布于 2020-12-13
    1 个回答
    Marcin
    Marcin
    发布于 2020-12-13
    已采纳
    0 人赞同

    我想CloudFront需要一个弹性负载平衡器。

    ELB不是使用CF的必要条件,但它简化了一些事情,例如在CF和你的服务器之间使用HTTPS。

    我需要将我的PHP文件部署到两个EC2实例上吗?

    是的,但这不是 "手动 "完成的。相反,它通常是通过使用用户数据(或自定义AMI)和自动缩放组完成的。因此,你必须阅读这些主题,了解如何做到这一点。

    EC2实例在自己的EBS存储中持有自己的MySQL数据库。