Nginx 设置web项目中图片防盗链以及禁止地址栏直接访问图片

Nginx 设置web项目中图片防盗链以及禁止地址栏直接访问图片

除了自己的域名,搜索引擎看需要,添加*.so.com *.baidu.com *.bing.com *.google.com *.sogou.com

图片要不要给搜索引擎收录,视情况决定。

我是配置不给搜索引擎的,商业项目一般不让搜索引擎乱抓,就算是搜索引擎不地道违反robots.txt协议也抓不到图。

Nginx设置web项目中图片防盗链以及禁止地址栏直接访问图片

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    valid_referers server_names *.abc.com *.abc.cn *.so.com *.baidu.com *.bing.com *.google.com *.sogou.com xx.xxx.xxx.xxx;
    if ($invalid_referer) {
        #rewrite ^/ http://www.abc.com/403.jpg;
        return 403;
    }
    root /home/laravel/public;
    expires 30d;
}

valid_referers:设置合法的referer列表,值可以是域名(不带协议头)、IP、server_names(表示当前域名)、正则表达式

$invalid_referer:当不符合valid_referers列表时,该值为1

expires:图片的浏览器的缓存时间

在宝塔上面的关于这方面的配置信息如下

location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
    expires 30d;
    access_log /dev/null;
    valid_referers none blocked api.talksphp.com;
    if ($invalid_referer){
        return 404;
    }
}

# none 表示无Referer值的情况(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)

# blocked 表示Referer值被防火墙进行伪装,如:“Referer: XXXXXXX”。

# server_names Referer来源头部包含当前的server_names(当前域名)

# arbitrary string 任意字符串,定义服务器名或者可选的URI前缀.主机名可以使用*开头或者结尾,在检测来源头部这个过程中,来源域名中的主机端口将会被忽略掉

# regular expression 正则表达式,~表示排除https://或http://开头的字符串.

Read More

发表回复