我有一个 Angular 应用程序,目前由 .Net Core 在服务器端呈现。我想更改我的构建过程以预呈现我几乎所有的站点并将所有静态文件推送到 Amazon S3 存储桶并将我的域名指向那里。但是,我无法预呈现我的所有网站(至少现在还不能)。
我找到了方法 return my index.html对于任何未预呈现且不存在于 S3 存储桶中的页面,这将允许我在客户端呈现页面,但我想更进一步,在服务器端即时呈现页面.
如果预呈现版本不存在,是否可以使用 S3 站点作为反向代理从我的 .Net Core 站点获取 SSR 页面?
更新:需要说明的是,S3 存储桶将用于 CloudFront CDN,因此在 S3 存储桶前面设置代理可能不是一个选项。
更新 2: 我发现我可以交付 dynamic content via CloudFront ,但我不希望一切都是动态的。我希望从廉价的 S3 存储桶提供任何静态内容(如我的预呈现页面),并且如果静态版本不存在,则只提供来 self 更昂贵的 EC2 实例的动态内容。
最佳答案
简短的回答是否定的。您不能使用 S3 作为反向代理来从另一个来源获取丢失的对象。
但是,如果您的静态内容可以通过路径轻松识别,您可以在 CloudFront 中创建两个来源,一个用于静态内容,一个用于动态内容,并使用不同的行为/每个来源的路径模式组合:静态内容的 S3 存储桶和动态内容的自定义来源(托管在 EC2 上)。
您可能还想看看 CloudFront Origin Failover,虽然它是为支持高可用性场景而设计的,但它可能适合您的用例。您还需要两个来源,主要来源和故障转移来源(用于静态和动态内容)。在此处查看更多信息: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html
关于angular - 我可以预渲染 Angular 并从 S3 回退到 SSR 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58767061/