1

是否可以使用其中一项 Amazon 服务(他们的 S3 数据服务或其他)来卸载 Ruby on Rails 应用程序的静态文件服务器,但仍支持应用程序的身份验证和授权?

这样,当用户浏览器为 Ruby on Rails 应用程序的一个页面下载初始 HTML 时,当它返回静态内容(例如图像或 CSS 文件)时,该请求将: (a) 直接路由到亚马逊服务(没有用于服务它的 RoR 周期或带宽),但是 (b) 浏览器对该项目(例如图像)的请求仍然必须通过基于 Ruby 中的用户模型的身份验证/授权层在 Rails 应用程序上 - 换句话说,确保不只是任何人都可以获得图像......

谢谢

4

1 回答 1

3

答案是肯定的,但是。您可以使用 S3 的一项功能,该功能允许您创建链接以保护具有较短生存时间的 S3 对象,默认值为 5 分钟。这适用于作为私有上传的任何 S3 对象。这意味着浏览器将只有 X 秒或其他时间从 S3 请求文件。AWS gem文档中的示例代码:

S3Object.url_for('beluga_baby.jpg', 'marcel_molina')

您还可以为每个文件指定 expires_in 或 expires 选项。不好的是,您需要为样式表、图像和 js 链接创建一个帮助程序,以创建正确的 S3 URL。我建议您为 S3 存储桶设置一个域名,例如“examples3.amazonaws.com”,并将所有标准图像文件和 CSS 公开。然后将其设置为您的 rails 配置中的资产主机。然后,只对真正需要它的静态文件使用安全链接。

于 2009-09-25T18:48:27.500 回答