Hiveblog的图片缓存功能很不错,顺利解决IPFS的缺席问题!

话接上回,由于IPFS的无权限导致服务器云盘爆满,无奈之下,只能将整个IPFS删除!我倒是想将自己的数据保留下来,可是因为IPFS的机制,它的数据都是细小的block组成,根本无法分辩哪个是哪个文件。

miao.jpg

删除IPFS后,喵星没有图片啰!

miao2.jpg
https://peakd.com/@lemooljiang/posts

在打开Peakd时却又发现图片竟然还在呢!这不由得喜出望外!赶紧查下图片地址,都是这种格式 https://images.hive.blog/1536x0/https://ipfs.ilark.io/ipfs/QmR98gViK8kXp3ELYJHMd7oK1SVpMawifsrfiPiCgRTA9v 不错,这是将图片都做了缓存。这也是有些是临时图床的解决方案。既然知道了方法,那就着手解决吧。

解决方案

解决方案比较直接:替代链接即可。 也就是在原有图片链接的基础上加上缓存的地址就可以了,以下是代码:

const replaceImage = (text) => {
  // https://ipfs.ilark.io/ipfs/QmbN9kGo63D1EeVwfcvnAakZiYK5m3rKXf2HY3yTegefK9
  let reg = /https:\/\/ipfs\.ilark\.io/g  //从md中提取链接
  if (reg != null){
    let newText = text.replace(reg, 'https://images.hive.blog/0x0/https://ipfs.ilark.io')
    return newText
  } else {
    return text
  }
}

整完后发现图片是可以显示了,可是那是在梯子开着的前提下!有没有可以直接打开的方案呢?

Nginx反向代理图片服务器

图片服务器https://images.hive.blog在国内不能直接打开,那用Nginx反向代理可以解决么?能想到这一步,问题差不多就解决啰!

先创建好网站,装好https证书。再更改配置,设置好反向代理,搞定!

location / {
        proxy_pass  https://images.hive.blog/;
        proxy_ssl_server_name on;
        proxy_set_header Host images.hive.blog;
        proxy_set_header Connection '';
        proxy_http_version 1.1;
        chunked_transfer_encoding off;
        proxy_buffering off;
        proxy_cache off;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

Nginx的主要配置如上,更改好图片服务器就好啰。

miao3.jpg
https://miao.ilark.io/lemooljiang

喵星人的图片功能恢得正常啰!