【问题标题】:Using NGinx as an image server with mongodb as a DB and node as app server...?使用 NGinx 作为图像服务器,将 mongodb 作为数据库,将节点作为应用服务器......?
【发布时间】:2012-11-07 14:00:41
【问题描述】:

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

例如它会是这样的:

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

头像:localaddressoftheneginxserver/imagefolder/imagename.jpg

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

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

【问题讨论】:

    标签: node.js mongodb nginx


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这听起来像我想要的。不错
    • 你给你的图片服务器对外提供了自己的静态IP吗?
    • 在我的例子中,我们将图像复制到 Amazon S3 存储桶/CDN 服务器,该服务器已经设置了 DNS 条目,因此客户端可以从中加载图像。如果您“拥有”/维护服务器您将在哪里存储图像,您很可能希望它也有一个静态 IP 和一个 DNS 条目(但使用现成的 CDN 解决方案来存储这些图像可能更容易,并且会给您更好的性能)。
    • 似乎使用 CDN 可能更容易,但我不确定性能。当然,也许某些边缘情况可能会更好……但我计划使用具有 4 核 @ 3.3 ghz 和 32 MB 内存的固态驱动器,并且不与其他任何人共享。我不确定 CDN 能否与之竞争。 (这只是价值 1.2k 的硬件)
    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 2016-07-02
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2013-04-18
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多