背景:防止第三方引用链接访问我们的图片,消耗服务器资源和网络流量,我们可以在服务器上做防盗链限制。
- 实现防盗链的方式有两种:refer方式和签名方式。
refer方式实现防盗链
工作模块:ngx_http_referer_module。
作用变量:$invalid_referer,全局变量。
配置域:server, location
配置:
upstream halo{
server ip:8090;
}
server {
listen 443;
server_name linyc.com.cn;
# 配置自己的拦截规则
location ~*\.(gif|jpg|jpeg|png|bmp|swf)$ {
proxy_pass http://halo;
expires 30d;
valid_referers none blocked *.linyc.com.cn ~\.google\. ~.baidu\.;
if ($invalid_referer) {
#return 403;
rewrite ^/https://cdn.jsdelivr.net/gh/qinhua/cdn_assets/img/robber.jpg;
}
}
}
expires:控制页面资源在浏览器缓存的时间
expires 30s; #缓存30秒
expires 30m; #缓存30分钟
expires 2h; #缓存2小时
expires 30d; #缓存30天
valid_referers: 指定资源访问是通过以下几种方式为合法,即白名单。
none:允许缺失的头部访问。
blocked:允许referer没有对应值的请求。
server_names:若referer站点域名与server_name中本机配的域名一样允许访问。
测试:站点图片复制地址
浏览器访问地址 shift + F5强刷
输入地址自动跳转到配置的rewrite
评论区