一、使用场景:
资源被其他网站无端盗用
服务器压力无端增加
二、实现方法
1.valid_referers指令可以检测被访问资源从哪个地址来
2.通过referer头字段判断
3.若为空,报403错误
nginx的准备工作:
可以看
虚拟机中使用LNMP模拟跨域并结合前端代码解决CORS跨域的简单示例-CSDN博客
参考一下
web1虚拟机的相关改动:
1)修改配置文件/usr/local/nginx/conf/nginx.conf,添加防盗链测试语句
[root@web1 nginx]# vim /usr/local/nginx/conf/nginx.conf
#valid_referers none 192.168.99.100; 如果请求中的referer 头字段包含者地址是99.100或者没有referer 头字段则有效
#$invalid_referer 如果是无效refer,return 403;
server {
...略
valid_referers none 192.168.99.100;
if ($invalid_referer){
return 403;
}
...略
}
2)web1主机编写测试页
路径:/usr/local/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
web1
测试页面 --
<a href="http://192.168.99.100/test.html">内容</a>
</body>
</html>
3)web1编写test.html
vim html/test.html
内容就写:test
4)第一次启动nginx使用/usr/local/nginx/sbin/nginx,重启nginx使用/usr/local/nginx/sbin/nginx -s reload命令启动nginx
web2主机的相关改动:
1)web2主机编写测试页
路径:/usr/local/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
web2
测试页面 --
<a href="http://192.168.99.100/test.html">内容</a>
</body>
</html>
2)第一次启动nginx使用/usr/local/nginx/sbin/nginx,重启nginx使用/usr/local/nginx/sbin/nginx -s reload命令启动nginx
三、测试
1. 从192.168.99.100主页点内容链接可以访问
2. 但从192.168.99.200点不可以