一只会飞的旺旺
文章93
标签72
分类8
利用闲置服务器搭建一个专属图床加速器

利用闲置服务器搭建一个专属图床加速器

小卖铺上新啦!ChatGPT账号大甩卖! 一键直达

我的博客是基于Hexo+Github搭建的,图床也是使用的Github。众所周知,由于某些原因,Github上的图片经常无法访问。通常,我们会使用jsDelivr进行加速,或者使用国内的CDN服务提供商,如腾讯云、七牛云等。

由于jsDelivr最近被墙了一段时间,国内访问速度也不太理想,因此我选择了腾讯CDN加速。价格倒是不贵,但最近发现由于一些文章的热度上升,流量消耗得很快。同时,我一直担心我的网站会受到恶意攻击。于是我决定换一种思路来解决这个问题,利用我自己的闲置服务器搭建一个加速器。

前提条件

  • 一台国内能流畅访问且能正常访问Github的服务器
  • Nginx
  • 域名(非必需)
  • Python

关于图床和Nginx的教程,你可以查看之前的文章。

教程

第一步:

拉取Github图片仓库到/var/www/目录下。请替换下面命令中的仓库地址为你自己的地址。

git clone https://github.com/image

第二步:

配置Nginx,映射当前图片仓库目录。假设我的图片仓库地址是:/var/www/image。以下配置的作用是,当访问 http://aaa.wangwangit.com/img/1.jpg 时,会实际访问服务器上的 /var/www/image/img/1.jpg 文件。

server {
    listen 80;
    server_name aaa.wangwangit.com;
    root /var/www/html;
 
    location /img {
        root /var/www/image/;
        autoindex on;
    }
}

完成修改后,执行 nginx -s reload 命令来更新配置。

第三步:

上面两步实际上已经配置好了图床的加速器。我们只需要使用自己的域名地址进行访问即可。也许你会问为什么要使用Github,而不是直接将图片存储在服务器上。这样做有几个原因:首先,我的以前的图片已经存在Github上了;另外,使用Github的话,我不需要自己去维护图床。

接下来,我们还需要及时拉取Github图床的更新。下面我来介绍如何实现这一点。

我们可以使用Github的Webhook功能,在服务器的/var/www/目录下创建一个名为webhook_receiver.py的Python文件,并编辑以下内容:

from flask import Flask, request
import subprocess

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    if request.headers.get('X-GitHub-Event') == 'push':
        subprocess.Popen(['git', '-C', '/var/www/image', 'pull'])
        return 'Webhook received successfully', 200
    else:
        return 'Unsupported event', 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

保存文件后,执行 pip install flask 命令来安装依赖。你可以先使用 python3 webhook_receiver.py 命令进行测试,确认是否正常运行。若一切正常,可以使用 Ctrl+c 结束执行,然后使用 nohup python3 webhook_receiver.py & 命令来运行它。

接下来,在Github项目中设置Webhook:

  1. 打开你的项目页面,点击 “Settings”(设置)选项卡。
  2. 在左侧导航栏中选择 “Webhooks”(Web钩子)。
  3. 点击 “Add webhook”(添加Webhook)按钮。
  4. 在 “Payload URL”(有效载荷 URL)字段中输入 http://your-server-ip:5000/webhook,将 your-server-ip 替换为你服务器的实际IP地址。
  5. 在 “Content type”(内容类型)字段中选择 “application/json”。
  6. 在 “Secret”(密钥)字段中输入一个可选的密钥,用于在请求中进行身份验证。
  7. 在 “Which events would you like to trigger this webhook?”(您想要触发此Webhook的事件?)部分选择 “Just the push event”(仅推送事件)选项。
  8. 确保 “Active”(启用)复选框被选中。
  9. 点击 “Add webhook”(添加Webhook)按钮保存设置。

image-20230523103759670

至此,部署完成。只需要在图床仓库上传一张图片,然后使用服务器的域名去访问,就可以测试是否配置正常了!

总结

我在文章中提到的几个方案,在之前的文章中都有详细介绍。如果你还有不懂的地方,可以去查看相关文章,或者加入我的交流学习群一起探讨!

微信支付码 微信支付
支付宝支付码 支付宝支付