如何使用 CloudFront 从 S3 提供静态文件
How to serve static files from S3 using CloudFront
我在 2 个来源前有一个 CloudFront 分配:
- S3
- API 网关 (Lambda)
我希望所有静态文件由 S3 提供,其余由 API 网关提供。
仅供参考,我正在尝试重现经典的 PHP 设置,静态文件由 Nginx 提供,其余文件由 PHP 通过 PHP-FPM 提供。
我怎样才能做到这一点?
我目前正在做的是:
它可以工作,但显然很糟糕,因为我必须手动添加所有静态文件扩展名。有没有办法匹配所有静态文件?或者检查 S3 中是否存在文件并从那里提供文件?
选项 1。让默认模式为存储桶,并使用 API 的路径模式创建缓存行为,如 /api/*
。在这里可能不实用。
选项2. 匹配发送文件请求到S3的扩展前的点,如/*.??
/*.???
等。?
占位符匹配 exactly one character和没有a *
在末尾,路径末尾的那么多字符内必须有一个点。
选项 3. 匹配 /assets/*
之类的前缀并将所有这些请求发送到存储桶。在对象键的开头使用 assets/
存储所有对象。
我在 2 个来源前有一个 CloudFront 分配:
- S3
- API 网关 (Lambda)
我希望所有静态文件由 S3 提供,其余由 API 网关提供。
仅供参考,我正在尝试重现经典的 PHP 设置,静态文件由 Nginx 提供,其余文件由 PHP 通过 PHP-FPM 提供。
我怎样才能做到这一点?
我目前正在做的是:
它可以工作,但显然很糟糕,因为我必须手动添加所有静态文件扩展名。有没有办法匹配所有静态文件?或者检查 S3 中是否存在文件并从那里提供文件?
选项 1。让默认模式为存储桶,并使用 API 的路径模式创建缓存行为,如 /api/*
。在这里可能不实用。
选项2. 匹配发送文件请求到S3的扩展前的点,如/*.??
/*.???
等。?
占位符匹配 exactly one character和没有a *
在末尾,路径末尾的那么多字符内必须有一个点。
选项 3. 匹配 /assets/*
之类的前缀并将所有这些请求发送到存储桶。在对象键的开头使用 assets/
存储所有对象。