如何提供Riak的图像

时间:2013-12-09 10:47:01

标签: image nginx sinatra riak

我在Riak中有一堆降价文档,我通过一个带有基本搜索功能的小型Sinatra API进行曝光。

每个文档都有一个关联的图像,也存储在Riak中(在不同的存储桶中)。我希望有一个客户端应用程序显示文档和它们相关的图像 - 所以我需要一些方法来使图像可用,但因为我只是按键要求它们,通过一个服务它们似乎很浪费Sinatra应用程序,因为我正在处理文档。

但是我对直接从Riak提供服务感到不安,因为a)即使使用nginx来限制可接受的请求,我担心会暴露出比我们想要的功能更多的功能b)Riak会为引用者的任何请求抛出403已设置,因此默认情况下使用直接到Riak网址作为src标记的img不起作用。

所以我的问题是 - 服务图像的好方法是什么?添加另一个端点到Sinatra应用程序?直接从Riak使用一些目前超出我的Nginx魔法?还是我还没考虑过其他一些方法?理想情况下,这将使用Ruby,因为我正在使用的团队更适合使用。

不确定此问题是否更适合服务器故障 - 如果是这样,我会将其移除。

1 个答案:

答案 0 :(得分:1)

关注将Riak暴露给任何直接连接你是对的。直到2.0明年年初到来,系统中没有安全性(虽然带有引用者的请求403是一种防止XSS的安全机制),即使安全地将任何数据库直接暴露给Internet也会引发灾难。

我没有对nginx做过任何事情,但我认为你真正需要正确使用它,这将是两个特点:

  • 能够限制对GET的请求
  • 能够将请求限制(或重写)到正确的存储桶
  • 能够删除Riak在其结果中包含的所有HTTP头(因为nginx是代理服务器而不是直接负载均衡器,看起来应该很简单)

假设你的图像是该存储桶中唯一的内容,nginx在这里感觉是一个合理的选择。