如何使用 CloudFront 从 S3 提供静态文件

How to serve static files from S3 using CloudFront

我在 2 个来源前有一个 CloudFront 分配:

我希望所有静态文件由 S3 提供,其余由 API 网关提供。

仅供参考,我正在尝试重现经典的 PHP 设置,静态文件由 Nginx 提供,其余文件由 PHP 通过 PHP-FPM 提供。

我怎样才能做到这一点?

我目前正在做的是:

它可以工作,但显然很糟糕,因为我必须手动添加所有静态文件扩展名。有没有办法匹配所有静态文件?或者检查 S3 中是否存在文件并从那里提供文件?

选项 1。让默认模式为存储桶,并使用 API 的路径模式创建缓存行为,如 /api/*。在这里可能不实用。

选项2. 匹配发送文件请求到S3的扩展前的点,如/*.?? /*.???等。?占位符匹配 exactly one character和没有a * 在末尾,路径末尾的那么多字符内必须有一个点。

选项 3. 匹配 /assets/* 之类的前缀并将所有这些请求发送到存储桶。在对象键的开头使用 assets/ 存储所有对象。