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

posted @ 2022-03-23 15:49  老夫聊发少年狂88  阅读(110)  评论(0编辑  收藏  举报