关于使用节点后端部署create-react-app的建议

时间:2019-08-19 10:03:01

标签: node.js reactjs amazon-web-services nginx

我正在尝试部署使用node.js express后端(在AWS EC2实例上运行)的React应用。我在决定如何部署我的React App以确保它可以从后端获取时遇到麻烦。

  1. 我可以将我的网站example.com设置为定向到具有我的React应用程序的AWS S3静态托管。在这种情况下,我将不得不对ec2 public ip进行硬编码,例如在React代码中fetch(“ http://12.35.143.34/api/users/1”)。

  2. 我可以将我的网站example.com设置为使用Nginx定向到ec2实例,该实例将/ api调用定向到服务器,并将任何其他类型的调用定向到S3存储桶。

我对两种方法都读了不同的文章,所以我对哪种方法正确感到困惑。

编辑:还是有第三个选项,例如api子域?

2 个答案:

答案 0 :(得分:1)

我的方式:

1。将您的节点应用程序部署到EC2,尝试附加DNS或仅通过aws使用给定的DNS-here

2。使用邮递员测试您的api。

3。将api url端点值更改为api DNS

4。部署(上传)您的dist /(构建目录)-here

5.config存储桶以充当静态网站主机-here

6.(可选)尝试将CloudFront配置到您的存储桶并获取应用程序dns-here

答案 1 :(得分:1)

有许多方法可以在AWS上运行基于NodeJS的应用程序。最适合您的选择取决于您的情况以及应用程序的开发方式。

  1. 使用AWS Elastic Beanstalk
    • 这是一项PaaS服务,使您可以在AWS基础架构之上运行应用程序,而不必单独配置此服务。
    • Documentation
  2. 使用AWS Lambda + AWS API Gateway
  3. EC2使用ELBAuto Scaling Groups
    • 无论应用程序的大小如何,都应在一定程度的高可用性和负载平衡下运行它。
    • 您不应仅在一个节点上运行应用程序;您应该使用Auto Scaling组。
    • 您不应直接在Internet上发布EC2实例;您应该使用应用程序负载平衡器。
    • 如果您的应用程序使用数据库,则应尝试将其移至RDS,而不要自己运行。

最后,要回答您的问题,我建议3:您应该使用多个CloudFront起源。我们使用S3存储桶原点来保存静态数据,并使用ELB原点来存储动态不可缓存内容。 Check this post for more information on how to do it

如果您拥有域,则还可以创建证书并通过由CloudFront处理的HTTPS提供内容。

希望对您有帮助。