
这两年来我一直都是使用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 OK | curl -H "Referer: https://bluehe.cn" https://bluehe.cn/图片地址 |
直接访问 | ❌ 403 Forbidden | curl -I https://bluehe.cn/图片地址 |
第三方盗链 | ❌ 403 Forbidden | 在其他域名页面嵌入图片链接 |
不过也发现了一个问题,开启防盗链后,主流rss工具订阅了我的rss之后,图片显示都会失效,原先的图文显示rss内容已经不在适用,所以只能从CustomRSS插件更换到AriaRSS插件。
最后更新 2025-03-04
上一篇: 南宁青秀山郁金香花展游记
下一篇:效率工具链构建与SSH防护实践
发现一个问题,图片防盗链之后,友情链接图标也失效了。
是的,全站只要没有通过bluehe.cn主域名,都会拦截,我需要找个图床来存储一些不需要拦截的图片。
我的目前没做处理,主要是很多其他域名也在用,处理起来太麻烦了。
不过这倒是个不错的办法。
1panel自带的也够用,多域名就不方便了,没必要不动核心,稳定为主。
右侧目录索引很漂亮,他们盗取链接的目的是什么啊?我看不少都说这个。
可能更多就是喜欢消耗别人的站点流量。从我角度来看,我就希望自己规避流量消耗,毕竟我云服务器是按量计费。
cdn上设置了防盗链,要不然被刷太多了。
有效措施都加上,稳定为主。cdn我没用,主要是需要购买流量包,免费的话又不放心。
特别是图片多的博主,一定要做图片防盗链,现在蜘蛛太厉害了
对的,比如我的图片是真的多,要限制图片流量了。
1panel 网站 设置 里好像就有防盗链设置。
有的,不过只实现了第三方盗链,直接访问还是可以显示图片,当我使用上述文章,两种都可以实现。
一直用的 apache2,虽早已知道 Nginx 的强大,但总是以各种理由止步,找个时间定要深入学习和实验一番。
可以的,nginx也深入可以挖掘。