V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Nxxx
V2EX  ›  问与答

请问 关于图片储存有哪些好方案呢?

  •  
  •   Nxxx · 2022-12-05 11:04:35 +08:00 · 4240 次点击
    这是一个创建于 730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 老哥哥们 我自己在搞一个壁纸网站 然后呢图片文件很大 请问下 关于图片储存有那些比较好的方案呢(还需要比较便宜= =、)

    PS: 我买的服务器 硬盘很贵 但是流量倒是很多

    图片存储在谷歌云 storage

    https://pic.jitudisk.com/public/2022/12/05/660917ac18901.png

    34 条回复    2023-03-15 23:37:09 +08:00
    44670
        1
    44670  
       2022-12-05 11:06:44 +08:00
    在储存图片时,一个好的方案是使用云存储。这种方式可以让你的图片存储在云端,而不是在你的服务器上。这样可以节省你服务器的硬盘空间,同时也可以降低你的成本。此外,云存储还可以提供更高的可用性和可扩展性。

    你可以在不同的云服务提供商中选择合适的云存储方案。通常来说,这些服务提供商会提供一个按需付费的模型,这样你只需要为实际使用的存储空间付费。

    此外,你还可以使用图片优化技术来减小图片的文件大小。这样可以降低你的流量成本,同时也可以让图片加载更快。你可以使用各种图片优化工具来实现这一点,例如 ImageOptim 或 Kraken.io

    总之,在储存图片时,使用云存储和图片优化是一个很好的方案。它可以节省你的成本,并提高图片的加载速度和可用性。
    Nxxx
        2
    Nxxx  
    OP
       2022-12-05 11:18:54 +08:00
    @44670 好的 谢谢老哥 顺便问下 那比如我存在谷歌云上的图片 我不想直接用谷歌云那边的公开链接,是通过一个中间件获取数据流 然后在发送给客户端,还是说 可以靠 nginx 也能实现我说的中间件的效果呢
    44670
        3
    44670  
       2022-12-05 11:22:57 +08:00
    @Nxxx 是的,你可以通过使用中间件来获取图片数据流,然后再发送给客户端。这样你就不用使用谷歌云上的公开链接,而是通过你自己的服务器来获取图片。

    同时,你也可以使用 nginx 来实现这一功能。通过在 nginx 配置文件中添加一些特定的指令,你可以实现通过 nginx 服务器获取图片数据流,然后再发送给客户端。这样做的好处是可以让你的服务器更加高效地处理图片流量,减少了对中间件的依赖。

    总之,你可以通过使用中间件或 nginx 来实现将图片从云存储中获取并发送给客户端的功能。选择哪种方式取决于你的具体需求和偏好。

    配置 nginx 来实现从云存储中获取图片并发送给客户端的功能,需要在 nginx 配置文件中添加一些特定的指令。下面是一个示例配置:

    server {
    listen 80;
    server_name example.com;

    location /images/ {
    # 设置代理服务器,用于从云存储中获取图片
    proxy_pass https://storage.googleapis.com/my-bucket/;

    # 设置请求头,以便云存储能够识别请求
    proxy_set_header Authorization "Bearer <your_access_token>";
    }
    }

    在上面的配置中,我们首先在 server 块中声明了监听 80 端口,并设置了服务器名称为 example.com 。然后我们在 location 块中指定了 URL 路径 /images/,这表示当客户端请求的 URL 以 /images/ 开头时,nginx 会执行特定的操作。

    接下来我们使用 proxy_pass 指令来设置代理服务器的地址。这里我们指定的是云存储的地址,即 https://storage.googleapis.com/my-bucket/。然后我们使用 proxy_set_header 指令来设置请求头,其中包含了访问令牌,这样云存储才能识别请求。

    当客户端请求 /images/ 目录下的图片时,nginx 会向云存储发送代理请求,并将云存储返回的图片数据流直接发送给客户端。

    通过 nginx 实现从云存储中获取图片并发送给客户端的功能,可能会存在一些安全风险。

    首先,由于图片数据流是通过 nginx 代理服务器传输的,因此有可能存在中间人攻击的风险。如果攻击者能够截获图片数据流,那么就可能会泄露用户的隐私数据,或者修改图片内容,从而导致不安全的后果。

    其次,如果你在 nginx 配置文件中使用了明文的访问令牌,那么也有可能会泄露你的云存储账号信息。如果攻击者能够获取到你的访问令牌,那么就可以擅自访问你的云存储账号,从而导致数据泄露或损坏的风险。

    为了避免这些安全风险,你需要采取一些预防措施。例如,你可以使用 HTTPS 协议来保证图片数据流的传输安全,并且在 nginx 配置文件中使用加密的访问令牌,以防止攻击者窃取你的账号信息。同时,你也可以定期检查你的网络安全,以确保你的系统不被攻击。
    Nxxx
        4
    Nxxx  
    OP
       2022-12-05 11:31:12 +08:00
    @44670 谢谢了 又学到了很多 ,老哥 不是机器人吧= =
    walkersz
        5
    walkersz  
       2022-12-05 11:36:36 +08:00
    @Nxxx 像机器人
    imMetaverse
        6
    imMetaverse  
       2022-12-05 11:37:09 +08:00
    怎么都是 ai 答复了
    aabbcc112233
        7
    aabbcc112233  
       2022-12-05 11:38:44 +08:00
    @Nxxx 用的 chatgpt ,直接 b
    tanglu
        8
    tanglu  
       2022-12-05 11:44:36 +08:00
    对象存储是一个不错选择
    我推荐 cloudflareR2 不计流量 1T 空间 15 刀 /月 到国内速度也还不错
    之前有个测试 ****loc.com/thread-1093052-1-1.html

    测试视频 : https://r2.smalljp.com/default/xiongchumo.mp4
    Nxxx
        9
    Nxxx  
    OP
       2022-12-05 11:50:05 +08:00
    @tanglu 好的谢谢 我怎么吧这个给忘了-= =
    estk
        10
    estk  
       2022-12-05 12:55:23 +08:00 via iPhone
    https://nft.storage
    shuxhan
        11
    shuxhan  
       2022-12-05 13:07:20 +08:00
    对象存储 bitiful 挺不错,成本很低
    cheese
        12
    cheese  
       2022-12-05 13:20:28 +08:00   ❤️ 3
    @Livid 1L 这种,连续多天多次直接回复 chatgpt 生成的回答,应该怎么定性?支持还是反对,反对的话,是警告还是 ban 号。这样的回答在 v 站越来越多了
    perfectlife
        13
    perfectlife  
       2022-12-05 13:20:58 +08:00
    fastdfs minio
    Livid
        14
    Livid  
    MOD
       2022-12-05 13:41:35 +08:00
    @cheese 谢谢。会彻底 ban 。
    binaryify
        15
    binaryify  
       2022-12-05 13:42:30 +08:00
    ai 回答 统一 block 处理
    Nxxx
        16
    Nxxx  
    OP
       2022-12-05 14:59:45 +08:00   ❤️ 1
    @Livid 虽说是机器人,但是也确实提供有效的信息了,如果要 ban 的话 平台能不能出个类似的机器人来做这种回答?
    Livid
        17
    Livid  
    MOD
       2022-12-06 02:57:26 +08:00   ❤️ 3
    @Nxxx 那你为什么不直接用 chat.openai.com 呢?
    SenLief
        18
    SenLief  
       2022-12-06 11:00:57 +08:00
    cf 的 R2 不错,容量也不算贵。
    mouyong
        19
    mouyong  
       2022-12-06 13:35:15 +08:00   ❤️ 1
    如果你愿意一次付费,一直使用,可以采用 vpn ,nas 结合的方案。购买一次 nas ,放在家里,使用 openvpn ,再有个云端服务器,不用担心流量费用、存储过大、存储文件丢失等各种问题。
    clrss
        20
    clrss  
       2022-12-06 14:10:09 +08:00
    AI 回复相当于全文转载, 至少要注明出处. 否则 ban 了不冤.
    Nxxx
        21
    Nxxx  
    OP
       2022-12-06 15:18:00 +08:00
    @Livid 好的 谢谢 这样后续有些低级常规的问题 也不用来麻烦论坛里的各位老哥了
    Nxxx
        22
    Nxxx  
    OP
       2022-12-06 15:18:24 +08:00
    @SenLief 我也看了 R2 的文档看的迷迷瞪瞪的 然后买了 cf 的 image = =
    tanglu
        23
    tanglu  
       2022-12-06 16:25:38 +08:00
    @Nxxx 我忘了还有 images,images 使用感觉怎么样呀?
    Nxxx
        24
    Nxxx  
    OP
       2022-12-06 18:00:06 +08:00
    @tanglu 感觉很方便 因为我的是壁纸网站 所谓公开也无所谓了了 而且减轻了我服务器传输图片数据的问题直接全放 cf 了 预付 5 美金 10w 张照片不 只限制数量,后续每 10w 张图 增加 1 美金 后付款
    woshinide300yuan
        25
    woshinide300yuan  
       2023-01-15 23:23:52 +08:00
    @Nxxx 可以给看看网站吗?学习一下。
    Nxxx
        26
    Nxxx  
    OP
       2023-03-11 12:34:29 +08:00
    @tanglu 顶不住了太贵了 现在预估我一月可能要交 100 刀的图片托管费用 其中大部分都是图片展示次数导致的收费 不知道是收费策略改了还是我当时没看清楚
    https://imgloc.com/i/sIhAZ
    https://imgloc.com/i/sI5NF
    tanglu
        27
    tanglu  
       2023-03-11 13:52:50 +08:00
    @Nxxx 我没有用过 images ,他难道不是像 R2 那样缓存到 CDN 吗?
    R2 对象存储也是收取读取费用,文件读取过程是"文件服务器>>cloudflareCDN>>用户",R2 只是在"文件服务器>>cloudflareCDN"这一段的读取次数计费,但是 cloudflareCDN 会将文件缓存,用户下次访问直接就是“cloudflareCDN>>用户”,不会涉及到请求次数计费
    我以为 images 也是这样
    R2 可以参考我写的: https://blog.tanglu.me/cloudflare-R2-configure
    tanglu
        28
    tanglu  
       2023-03-11 13:55:46 +08:00
    你可以说下你的总文件大小和带宽平均大小,我帮你分析下选用什么划算
    Nxxx
        29
    Nxxx  
    OP
       2023-03-12 11:30:22 +08:00
    @tanglu 好的先谢谢老哥了 那个 images 可以理解为付费的图床,然后我的文件 99%都是图片 100K 以下目前大概 6-7GB 应该 因为都存在 images 所以我不太清楚 再有我目前只能看服务器的平均带宽 传输也只是一下数据库查询的关联数据信息和图片 url 的信息,目前服务器平均 2.5MB/s 上下行差不多
    tanglu
        30
    tanglu  
       2023-03-12 13:53:15 +08:00   ❤️ 1
    @Nxxx 才 10GB 不到的话肯定用 R2 对象存储划算,给存储桶套上你的 CF 域名然后在规则中设置全部缓存就行,这样存储和流量成本为 0 元
    可以参考我博客写的:
    R2 对象存储: https://blog.tanglu.me/cloudflare-R2-configure
    其他缓存规则: https://blog.tanglu.me/cloudflare-configure/#Caching
    tanglu
        31
    tanglu  
       2023-03-12 13:54:35 +08:00
    我以为你图片是 10MB 左右的大小,100k 大小就用对象存储就行
    Nxxx
        32
    Nxxx  
    OP
       2023-03-15 13:01:54 +08:00
    @tanglu 老哥 我用你那个教程 下载 sh 脚本后就报错了= = 不过还是谢谢了
    Nxxx
        33
    Nxxx  
    OP
       2023-03-15 13:02:07 +08:00
    @tanglu 老哥 我用你那个教程 下载 sh 脚本后就报错了 不过还是谢谢了
    tanglu
        34
    tanglu  
       2023-03-15 23:37:09 +08:00
    @Nxxx 我是 debian 系统,你直接搜索安装 rclone 就会有教程
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3384 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:42 · PVG 19:42 · LAX 03:42 · JFK 06:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.