Typecho 优化:实现图片防盗链与1Panel使用

这两年来我一直都是使用Nginx Proxy Manage工具来进行反向代理,但近期发现不好使用了,经常登录显示Bad gateway。Docker搭建的Nginx Proxy Manage是由一个npm_app和一个npm_db(mysql)构造,显示Bad gateway的话需要重启npm_db,才能登录,而且是小部分概率才能登录,有时候服务器重启我也无法登录,耗费了许多时间。

今天就使用1Panel进行反代,1Panel跟宝塔类似,上手没有难度,只需要安装OpenResty应用就可以实现反代了。

在不使用CDN的情况下,如何达到防盗链的效果,众所周知:最简单就是图片添加水印,另一个就是服务器端,我是基于Docker搭建的Typecho进行防盗链,本文从Nginx展开,通过百炼deepseek-r1完成。

防盗链效果(Docker 环境专用)

步骤 1:进入 Nginx 容器

# 进入容器(使用容器名称或ID)
docker exec -it typecho_nginx_1 /bin/sh

步骤 2:定位 Nginx 配置文件

cd /etc/nginx/conf.d
ls -l  # 确认存在 typecho.conf

步骤 3:编辑typecho.conf

1.安装编辑器(如容器内无 vim)

apk update && apk add vim   # Alpine 系统
# 或
apt update && apt install vim -y  # Debian/Ubuntu 系统

2.打开配置文件

vim typecho.conf

3.在 server 块内添加防盗链规则
找到 server { ... } 部分,插入以下内容(参考位置):

server {
    listen 80;
    server_name bluehe.cn;
    # ... 其他原有配置 ...

    # 🔐静态资源防盗链(参考位置)
    location ~* \.(jpg|jpeg|png|gif|webp)$ {
        valid_referers server_names ~^([a-z]+\.)?bluehe\.cn$;
        
        if ($invalid_referer) {
            # 返回纯文本错误
            add_header Content-Type text/plain;
            return 403 'You don\'t have permission to access the URL on this server.\r\ndenied by Referer ACL';
        }

        expires 30d;
        access_log off;
        add_header Cache-Control "public";
        root /var/www/html;
    }

    # 其他原有 location 规则(如 PHP 处理)
    location ~ .*\.php$ {
        # ...
    }
}

步骤 4:验证配置并重启 Nginx

1.保存文件vim 操作:按 Esc → 输入 :wq → 回车
2.检查语法nginx -t输出:nginx: configuration file /etc/nginx/nginx.conf test is successful
3.重载配置(不中断服务)nginx -s reload
4.退出容器exit

步骤 5:验证防盗链效果

场景预期结果验证命令
合法访问✅ 200 OKcurl -H "Referer: https://bluehe.cn" https://bluehe.cn/图片地址
直接访问❌ 403 Forbiddencurl -I https://bluehe.cn/图片地址
第三方盗链❌ 403 Forbidden在其他域名页面嵌入图片链接

不过也发现了一个问题,开启防盗链后,主流rss工具订阅了我的rss之后,图片显示都会失效,原先的图文显示rss内容已经不在适用,所以只能从CustomRSS插件更换到AriaRSS插件。

寻鹤 寻鹤 2025年03月04日
    26天前 把以前已有的logo重制了下,用ps描边使得logo更加圆润些,放大不模糊,如现在头像显示;同样也重制并形成了新的的评论回复页面,回复的主题是“书信”。
    1. 效率工具链构建与SSH防护实践
    2. 南宁青秀山郁金香花展游记
    18
    8 of 110
    桂ICP备2022001355号-2
    桂公网安备 45012702000102号