Nginx防盗链配置

young 483 2021-10-18

作用放置其他人盗用系统静态资源

正常访问

location ~* .\(png|gif|png)${
    root /usr/static;
}

此时可以通过浏览器可以正常访问到静态资源

也可以通过命令行访问

curl --referer http://baidu.com -| http://192.168.12.120/logo.png

在curl通过--referer选项来指定我们是从哪里跳转的 -|参数则只显示 http response的头信息

表示是通过baidu.com来访问这个地址的

加防盗链

valid_referers none | blocked | server_names | string

none 表示header中没有Referer字段的情况,即直接通过地址栏访问,不是通过网站或链接的跳转

blocked header中有Referer字段,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头

字符串 配置域名列表,支配通配符、正则表达式写法

location ~* .\(png|gif|png)${
    root /usr/static;
    valid_referers none blocked *.yhsblog.cn;
    if($invalid_referer) {
        #rewrite ^/ http://www.youdomain.com/404.jpg;
        return 403;
        break;
    }
    access_log off;
}

这么写表示:如果"refer为空"、或"refer不以http/https开头"、或"域名为yhsblog.cn的server_name" 都是有效的refer,也即valid_referers的值为0(允许访问),除此之外为1(返回403)。

如果指向根据域名匹配,只保留域名列表即可
valid_referers *.yhsblog.cn;