什么是图片盗链
- 每张图片在浏览器中都有对应的图片地址,在浏览器中输入这个地址是能够直接拿到图片。
- 图片盗链,就是盗用者在他的站上须要显示咱们的图片,他没有把图片拿下来,放到他的服务器上,
- 而是直接就用咱们的,图片地址,来请求到咱们的服务器来拿图片,流量产生在咱们这边。
referer
referer指令经过检测访问图片的来源,来作出一些控制。
图片访问的来源
- 经过谷歌/百度访问
- 经过浏览器直接访问
- 本站点的访问
- 来自非法的域名访问
referer
- nginx 模块 ngx_http_referer_module 一般用于阻挡来源非法的域名请求.
- 但咱们应该牢记,假装 Referer 头部是很是简单的事情,因此这个模块只能用于阻止大部分非法请求.
- 咱们应该记住,有些合法的请求是不会带 referer 来源头部的,因此有时候不要拒绝来源头部(referer)为空的请求
图片防盗链配置
location ~* \.(gif|jpg|png|bmp)$ {
valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;
if ($invalid_referer) {
return 403;
}
}
- 以上全部来至 ttlsa.com 和域名中包含 google 和 baidu 的站点均可以访问到当前站点的图片,
- 若是来源域名不在这个列表中,那么$invalid_referer 等于 1,在 if 语句中返回一个 403 给用户,
- 这样用户便会看到一个 403 的页面,若是使用下面的 rewrite,那么盗链的图片都会显示 403.jpg。
- 若是用户直接在浏览器输入你的图片地址,那么图片显示正常,由于它符合 none 这个规则.
参数说明
- none
- blocked
- “Referer”来源头部不为空,可是里面的值被代理或者防火墙删除了,这些值都不以 http://或者 https://开头.
- server_names
- “Referer”来源头部包含当前的 server_names(当前域名)
- regular expression
- 正则表达式,~表示排除 https://或 http://开头的字符串