【问题标题】:Can I reverse-proxy POST requests while using CloudFront CDN for GET requests?在使用 CloudFront CDN 处理 GET 请求时,我可以反向代理 POST 请求吗?
【发布时间】:2022-01-24 22:15:45
【问题描述】:
目前我有从 S3 存储桶提供 SPA (spa.myapp.com) 的 CloudFront 分配。我还在 AWS 上的 k8s 中部署了 Web 服务器。
-
是否可以将所有 POST spa.myapp.com/* 请求转发到我的网络服务器?我需要哪些组件/配置来执行此操作?
-
是否可以将所有 spa.myapp.com/api/* 请求转发到我的网络服务器(不管 http 方法)?我需要哪些组件/配置来执行此操作?
通常我想从 CDN 提供 SPA,但在同一域上也有很少的端点服务器端。
【问题讨论】:
标签:
amazon-web-services
amazon-cloudfront
【解决方案1】:
- 在
* 路径的 CloudFront 行为中,您应该允许所有类型的方法:
来自docs:
CloudFront 始终缓存对 GET 和 HEAD 请求的响应。您还可以将 CloudFront 配置为缓存对 OPTIONS 请求的响应。 CloudFront 不会缓存对使用其他方法的请求的响应。
这意味着POST 请求总是被重定向到源(后端),对这些请求的响应不会被缓存。如果缓存未命中,GET 和 HEAD 请求也可能会被重定向。否则返回缓存中的数据。
- 当您创建 CloudFront 分配时,您必须将行为设置为默认值。通常,您保持默认路径模式不变,因此
*:
你可以有多种行为,它们可以有不同的缓存属性。这些行为由它们的路径模式来区分。它们也可以具有优先级,传入的请求首先根据更高优先级的行为进行评估。例如:
要回答您的问题,您必须为/api/* 路径创建不同的行为,并为此行为应用不同的配置。与默认行为相比,这必须具有更高的优先级。请记住,CloudFront 仅缓存 GET、HEAD 和 OPTIONS 请求。