嘟嘟社区

[疑问] Nginx负载均衡访问各大厂图床问题,配置大佬来给点意见


通过大佬的图床接口将同一个图片上传到各大厂oss上会得到很多图片地址,比如:
https://s.pc.qq.com/tousu/img/20210329/3026474_1616988181.jpg
https://img10.360buyimg.com/ddimg/jfs/t1/163550/18/15288/643/60614892Ef98777b2/8aaeaa2c6358f84f.png
https://590233ee4fbb3.cdn.sohucs.com/auto/1-auto5ee3649f01014209924829f790053f57
https://ps.ssl.qhmsg.com/t01754f8b1f1ec498be.jpg

由于大厂oss上图片可能随时会失效,我是想通过一个vps上的nginx负载均衡实现类似短网址的302跳转,
比如通过访问www.abc.com/img/1.jpg时自动302到上面第一个地址,如果第一个被清理了返回404时就跳转到第二个地址,
现在不知道如何在nginx中检测即将跳转到的地址是不是404,尝试了try_files配置没成功。

如果只跳转到某一个大厂地址上没问题,直接return302就行,但如果图片被清理了就失效了。
    location /img/1.jpg {
        return 302 https://s.pc.qq.com/tousu/img/20210329/3026474_1616988181.jpg;
    }
我是想在上面基础上把各大厂图床做一个fail-over ,只要有一个没清理就可极速访问(可在自己vps上再放一份图片做兜底),且图片还是固定链接。

这需求用纯nginx做。。

楼主你要不考虑下别的方法?

我的思路是,图片ID 对应 10个图床地址,然后加1个标记符。
难道不是用程序在后台把图床地址每天轮询一遍,如果失效,就标记1,没有失效就是0。
然后sql查询的时候,取1条=0的即可。