2012-11-07 55 views
0

我想承载一个社交类型的网站。它将在节点(或vertx)上。我的问题是........如果我的局域网上有独立的图像服务器,当用户上传文件时,应将文件保存到图像-nginx服务器,然后数据库告知它,给出了图片的链接?使用NGinx作为图像服务器,将mongodb作为数据库和节点作为应用服务器...?

例如它会是这样:

db.users.find( 'profilepicture':1)

profilepicture:localaddressoftheneginxserver/imagefolder/imagename.jpg

上午我通过思考的东西是否正确?将图像传送到单独的nginx服务器上......让数据库不包含实际图片,而是链接到图片......所以当客户端连接到应用程序服务器并要求查询特定图片时,它会查询数据库数据库将链接发送到应用程序服务器...然后应用程序服务器通知用户计算机的图片位置?

会这样吗?我对于外面的某个人如何连接到应用程序服务器,然后也能够连接到同一局域网上的图像服务器(即使他们有地址)有点困惑。图像服务器需要一些独立的IP吗?

回答

1

我们也有类似的用例,我们处理的方式是以下几点:

  • 将图像上传到应用服务器的第一个,它被存储为一个临时文件。
  • (可选)对图像格式运行一些验证,如果需要调整大小。
  • 将映像从应用程序服务器传输/部署到映像服务器(可能是nginx,CDN,Amazon S3等)。
  • 用客户端要加载的图像位置更新数据库记录。
  • 从应用程序服务器中删除临时文件。

这样,HTTP客户端只与保留所有业务逻辑/安全/访问控制等的应用服务器进行通信。它只能从映像服务器读取。

实际上让用户直接写入映像服务器可能会带来安全风险,因为这种类型的服务器通常对上传的内容(与应用程序服务器不同)没有多少控制权。

+0

这听起来像我想要的。尼斯 – NoTiG

+0

你给你的图像服务器它是自己的静态IP给外部世界吗? – NoTiG

+0

就我而言,我们将图像复制到Amazon S3存储桶/ CDN服务器,该服务器已经设置了一个DNS条目,以便客户端可以从中加载图像。如果您“拥有”/维护要存储的服务器图像,你很可能希望它有一个静态IP和一个DNS条目(但它可能更容易使用现成的CDN解决方案来存储这些图像,并会给你更好的性能)。 –