在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 星期一