带有 React 应用程序的 AWS S3 存储桶:我的 React SPA 可能是部分静态的吗?
AWS S3 bucket with React app: it is possible with my React SPA that is partially static?
我想使用带 S3 存储桶的 AWS CloudFront 托管我的 React 前端。
目前,我的应用程序部署在 EC2 实例中,概要如下:
前端:端口 80
上的 React 应用程序 运行。当用户转到 https://myapp.com
时,请求将定向到 my-ec2-instance:80
。
后端:端口 3000
上的 Express JS 运行。当用户在浏览器中加载前端并与网站交互时,http 请求将发送到 https://myapp.com/api/*
,然后路由到 my-ec2-instance:3000
;
我想将前端从 ec2 实例中取出,并使用带有 S3 存储桶的 AWS CloudFront 进行托管,这样 EC2 实例只托管后端服务。
我了解到 AWS CloudFront / S3 存储桶只能托管静态网站。
在这种情况下,我的 React 前端是静态单页应用程序还是动态的?
我可以做吗?
您的应用程序是动态的,因为您需要 Express。 S3 只能提供静态内容,不能用于托管 node.js 应用程序。您仍然可以在 EC2 实例中从 S3 和托管 Express 提供静态内容,但您的部署策略会更加复杂。
如果您在 EC2 实例中托管静态和动态内容,那么在 CloudFront 中您需要基于路径的路由,对此有很好的解释 。
我想使用带 S3 存储桶的 AWS CloudFront 托管我的 React 前端。
目前,我的应用程序部署在 EC2 实例中,概要如下:
前端:端口 80
上的 React 应用程序 运行。当用户转到 https://myapp.com
时,请求将定向到 my-ec2-instance:80
。
后端:端口 3000
上的 Express JS 运行。当用户在浏览器中加载前端并与网站交互时,http 请求将发送到 https://myapp.com/api/*
,然后路由到 my-ec2-instance:3000
;
我想将前端从 ec2 实例中取出,并使用带有 S3 存储桶的 AWS CloudFront 进行托管,这样 EC2 实例只托管后端服务。
我了解到 AWS CloudFront / S3 存储桶只能托管静态网站。
在这种情况下,我的 React 前端是静态单页应用程序还是动态的?
我可以做吗?
您的应用程序是动态的,因为您需要 Express。 S3 只能提供静态内容,不能用于托管 node.js 应用程序。您仍然可以在 EC2 实例中从 S3 和托管 Express 提供静态内容,但您的部署策略会更加复杂。
如果您在 EC2 实例中托管静态和动态内容,那么在 CloudFront 中您需要基于路径的路由,对此有很好的解释