Nginx做图片防盗链,网站图片提示404的一个原因


在nginx配置文件里加了防盗链的配置,网站上的图片都不见了,打开控制台,返回的是404的提示。404的意思就是访问的页面文件不存在。所以哪里配置路径错了,看了下配置,里面明明没有加路径为什么提示错呢,答案就是必须指定路径,否则图片找不目录 。目前市面上给出方法的几乎都没指定路径,不知道他们是如何成功的,可能有加其它配置吧。


在要防盗链的站点的nginx配置文件,如cozof.blog.conf中的server里加以下配置,红色为指定网站的路径:

#------------------------begin-------------------------------

location ~* \.(gif|jpg|png|jpeg|bmp|swf|mp3|wma)$ {

   valid_referers none blocked *.cozof.com *.baidu.com *.google.com *.bing.com *.sogou.com;

   if ($invalid_referer) {

       rewrite ^/ https://wx3.sinaimg.cn/mw690/0060lm7Tly1fs7acsoko1j303201va9t.jpg;

       #return 403;

   }

   root   /web/nginx/html/xxx;

}

#------------------------end-------------------------------


gif|jpg|png: 不允许站外引用的文件扩展名

valid_referers: 允许引用的站点等

none: 没有指定referer可引用

blocked: referer存在但被防火墙或代理服务器删除的可引用

*.cozof.com: 网站的所有域名可引用,*为通配符

后面的baidu、google等,表示所允许引用图片的搜索引擎域名

invalid_referer: 如果匹配到非来自valid_referers的请求,则把请求转到一个提示图片https://wx3.sinaimg.cn/mw690/0060lm7Tly1fs7acsoko1j303201va9t.jpg

如果把none和blocked删掉,则不能通过浏览器地址栏直接打开图片。如果不想让用户直接打开图片,则删掉这两个。


配置完先检查配置文件格式有没错误,输入:

nginx -t

没错则重启nginx。

由于可能有图片缓存,页面需要强制刷新。


本地测试:

如建一个a.html,找张自己网站上的图片,如:

<img src="http://www.cozof.com/uploadfile/2011/0903/thumb_230_145_20110903093309863.jpg?rnd=123"/>

要把a.html放在127.0.0.1或localhost等可用http协议访问的相关目录下,然后访问 http://localhost/a.html 。而不是直接双击打开测试。


测完一次再测,可随意更改?后面的字符串,防止缓存。

     

类别:OperationMaintenance   阅读(0)   评论(0)    发表时间:2018-06-11 20:43  星期一

评论区

发表评论

        姓名:
邮箱|网站:
        内容:

  (可按Ctrl+Enter提交)