0

我想托管一个社交类型的网站。它将在节点(或顶点)上。我的问题是........如果我的局域网上有一个单独的图像服务器..当用户上传文件时,文件应该保存到图像 -nginx 服务器,然后数据库告诉它和给个图片链接?

例如它会是这样的:

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

profilepicture: localaddressoftheneginxserver/imagefolder/imagename.jpg

我是否正确地思考问题?让图像在单独的 nginx 服务器上提供......让数据库不包含实际图片,但包含图片的链接......所以当客户端连接到应用服务器并请求特定图片时,它会查询数据库,数据库将链接发送到应用服务器...然后应用服务器通知用户计算机图片位置?

那行得通吗?我只是有点困惑,外面的人如何连接到应用服务器,然后即使他们有地址也能够连接到同一局域网上的图像服务器。图像服务器是否需要一些单独的 IP?

4

1 回答 1

1

我们有一个类似的用例,我们处理它的方式如下:

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

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

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

于 2012-11-07T06:00:41.317 回答