- 我们都看过有些文章中的图片,你点击一下就会跳转到其他页面,可能会提示“404”或者“403”之类的,这说明文章的图片盗用了别的网站的图片,文章只是嵌入了一个链接,而图片所在的网站采用防盗链技术。防盗链技术可以降低的服务器不必要的负载,以及版权之类的,当然,如果你的服务器群足够强大,你可以设置水印、品牌之类的标识。
- 下面,我们来配置下nginx的防盗链:
## 1、nginx配置
cd /etc/nginx/conf.d
vi https.www.flighting.top.conf
# HTTPS redirect
server {
listen 443 ssl;
server_name www.flighting.top;
# SSL
ssl_certificate /etc/nginx/crt/test.crt;
ssl_certificate_key /etc/nginx/crt/test.key;
# security
#include conf.d/include/security.conf;
# logging
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
# reverse proxy
location / {
proxy_pass http://tomcat;
#include conf.d/include/proxy.conf;
}
location ~* ^.+.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
valid_referers none blocked www.flighting.top;
if ($invalid_referer) {
#return 302 http://www.flighting.top/img/nolink.jpg;
return 404;
break;
}
access_log off;
}
# additional config
#include conf.d/include/general.conf;
# location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
# }
}
-就是基础之上加入下面配置:
location ~* ^.+.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
valid_referers none blocked www.flighting.top;
if ($invalid_referer) {
#return 302 http://www.flighting.top/img/nolink.jpg;
return 404;
break;
}
access_log off;
}
- location ~* ^.+.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$:匹配以 jpg/png/gif 结尾的文件请求
- valid_referers: 指令用于设置允许访问资源的网站列表 (即白名单)
- none : 匹配没有 Referer 的 HTTP 请求,如 valid_referers none
- blocked: 匹配 HTTP 请求中含有 Referer ,但是被防火墙或者代理服务器修改,去掉了
- 当请求的 refer 是合法的,即可以被后面任一参数所匹配, $invalid_referer 的值为0, 若不匹配则值为 1,即不合法的请求,直接返回 404
- access_log off:不记录日志
## 2、测试
- 我们来访问https://47.101.201.179,还是上次测试的页面:
- 找到一张图片:tomcat.png,在https://47.101.201.179访问是正常的
- 我们来直接访问https://47.101.201.179/tomcat.png
- 返回404,说明防盗链设置成功了