我有一个Angular应用程序,当前由.Net Core在服务器端呈现。我想更改构建过程以预渲染几乎所有站点,并将所有静态文件推送到Amazon S3存储桶,然后将我的域名指向那里。但是,我无法呈现我的所有网站(至少尚未呈现)。
我发现了如何对未预渲染且在S3存储桶中不存在的任何页面进行return my index.html,这将使我能够在客户端渲染页面,但是我想更进一步,将服务器-side即时呈现页面。
是否有一种方法可以将S3站点用作反向代理,如果不存在预渲染的版本,该反向代理将从我的.Net Core站点获取SSR页面?
更新:请注意,S3存储桶将用于CloudFront CDN,因此在S3存储桶前面设置代理可能不是一种选择。
更新2:我发现我可以交付dynamic content via CloudFront,但我不希望一切都是动态的。我希望从便宜的S3存储桶中提供任何静态内容(例如我的预渲染页面),并且如果不存在静态版本,则仅从更昂贵的EC2实例中提供动态内容。
简短的答案是否。您不能使用S3作为反向代理来从其他来源获取丢失的对象。
但是,如果可以轻松地通过路径识别您的静态内容,则可以在CloudFront中创建两个来源,一个用于静态内容,一个用于动态内容,然后使用不同的行为/路径模式组合进行投放对于每个来源:针对您的静态内容的S3存储桶,也许对于您的动态内容的自定义来源(托管在EC2上)。
您可能还想看看CloudFront Origin Failover,尽管它是为支持高可用性方案而设计的,但它可能适合您的用例。您还需要两个来源,主要和故障转移(用于静态和动态内容)。在此处查看更多信息:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html