nginx优化图片防盗链
公司网站有很多图片,为防止图片被盗链,所以对nginx进行优化。
配置后所有盗链的图片都会失效。
Syntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, location
Specifies the “Referer” request header field values that will cause the embedded $invalid_referer variable to be set to an empty string. Otherwise, the variable will be set to “1”. Search for a match is case-insensitive.
配置如下:
rewrite_log on;
valid_referers none blocked *.openc2p.cn openc2p.com servicewechat.com *.qq.com;
if ( $invalid_referer) { #没有匹配到规则 invalid_referer的值为1 if条件成立就会跳转
rewrite ^/ https://newstatic.rongbiz.com/skin/rongbiz/images/404-new.gif;
}
none 代表没有referer
blocded代表有referer但是被防火墙或者是代理给去除了。
PS:
首先当我输入我要打开的网址的时候,因为是直接输入的没有referer所以匹配了
valid_referers后面的none或者是blocked 所以invalid_referer值为0 所以不进行跳转.
当我是从这个网站里面的链接跳到该网站首页的时候 因为referer的值是肯定包含srever_names 所以匹配了server_names所以不进行跳转。
当我从搜素引擎进去的时候因为referer字段类似于www.google.com.hk/search
开始进行匹配 发现没有一个匹配,则此时会设置invalid_referer值为1 if语句成功执行,进行了跳转. 达到功能
资料参考:
https://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers