• 售前

  • 售后

热门帖子
入门百科

配置Nginx的防盗链的操作方法

[复制链接]
索支较 显示全部楼层 发表于 2021-10-26 13:00:29 |阅读模式 打印 上一主题 下一主题
实验情况
•一台最小化安装的CentOS 7.3虚拟机
•设置:1核心/512MB
•nginx版本1.12.2
一、设置盗链网站
1.启动一台nginx虚拟机,设置两个网站
  1. vim /etc/nginx/conf.d/vhosts.conf
复制代码
添加以下内容
  1. server {
  2. listen 80;
  3. server_name site1.test.com;
  4. root /var/wwwroot/site1;
  5. index index.html;
  6. location / {
  7. }
  8. }
  9. server {
  10. listen 80;
  11. server_name site2.test.com;
  12. root /var/wwwroot/site2;
  13. index index.html;
  14. location / {
  15. }
  16. }
复制代码

2.在宿主机编辑C:\Windows\System32\drivers\etc\hosts文件
  1. 192.168.204.11      site1.test.com
  2. 192.168.204.11      site2.test.com
复制代码
3.创建网站根目录
  1. mkdir /var/wwwroot
  2. cd /var/wwwroot
  3. mkdir site1
  4. mkdir site2
  5. echo -e "<h1>site1</h1><img src='1.jpg'>" >> site1/index.html
  6. echo -e "<h1>site2</h1><img src='http://site1.test.com/1.jpg'>" >> site2/index.html
复制代码
4.将1.jpg上传到/var/wwwroot/site1目录
5.启动nginx服务
  1. systemctl restart nginx
  2. netstat -anpt | grep nginx
复制代码

6.防火墙放通80端口
  1. setenforce 0
  2. firewall-cmd --zone=public --add-port=80/tcp --permanent
  3. firewall-cmd --reload
复制代码
7.在宿主机访问
http://site1.test.com

http://site2.test.com

二、设置site1.test.com防盗链
1.编辑nginx设置文件
  1. server {
  2. listen 80;
  3. server_name site1.test.com;
  4. root /var/wwwroot/site1;
  5. index index.html;
  6. location / {
  7. }
  8. location ~ \.(jpg|png|gif|jpeg)$ {
  9.   valid_referers site1.test.com;
  10.   if ($invalid_referer) {
  11.    return 403;
  12.   }
  13. }
  14. }
  15. server {
  16. listen 80;
  17. server_name site2.test.com;
  18. root /var/wwwroot/site2;
  19. index index.html;
  20. location / {
  21. }
  22. }
复制代码

2.重启nginx服务
  1. systemctl restart nginx
复制代码
3.在宿主机访问
扫除欣赏器缓存,访问http://site1.test.com

扫除欣赏器缓存,访问http://site2.test.com

可见,防盗链设置起到了作用
三、设置防盗链返回其他资源
1.编辑nginx设置文件
增加一个虚拟主机,对防盗链掩护的资源进行重写
  1. server {
  2. listen 80;
  3. server_name site1.test.com;
  4. root /var/wwwroot/site1;
  5. index index.html;
  6. location / {
  7. }
  8. location ~ \.(jpg|png|gif|jpeg)$ {
  9.   valid_referers site1.test.com;
  10.   if ($invalid_referer) {
  11.    rewrite ^/ http://site3.test.com/notfound.jpg;
  12.    #return 403;
  13.   }
  14. }
  15. }
  16. server {
  17. listen 80;
  18. server_name site2.test.com;
  19. root /var/wwwroot/site2;
  20. index index.html;
  21. location / {
  22. }
  23. }
  24. server {
  25. listen 80;
  26. server_name site3.test.com;
  27. root /var/wwwroot/site3;
  28. index index.html;
  29. location / {
  30. }
  31. }
复制代码
解释
location ~ \.(jpg|png|gif|jpeg)$ {}为设置防盗链的文件类型,利用竖线|分隔。
valid_referers site1.test.com *.nginx.org;为白名单,利用空格分隔,可以利用*进行泛域名设置。
if ($invalid_referer) {}为判断是否符合白名单,不符合白名单将实验{}内的内容。
rewrite ^/ http://site3.test.com/notfound.jpg;为重写资源,假如不合符白名单,则重写为该地点。
return 403;代表返回的状态码为403。
2.建立site3根目录
  1. cd /var/wwwroot
  2. mkdir site3
  3. echo -e "<h1>site3</h1><img src='notfound.jpg'>" >> site3/index.html
复制代码
3.上传notfound.jpg文件至/var/wwwroot/site3目录
4.重启nginx服务
  1. systemctl restart nginx
复制代码
5.在宿主机编辑C:\Windows\System32\drivers\etc\hosts文件
增加对site3.test.com的映射
  1. 192.168.204.11      site1.test.com
  2. 192.168.204.11      site2.test.com192.168.204.11      site3.test.com
复制代码
6.在宿主机访问http://site2.test.com
可以看到,在site2中盗用的site1的1.jpg文件,被重定向到了site3上的notfound.jpg文件

总结
以上所述是小编给各人介绍的设置Nginx的防盗链的操作方法 ,盼望对各人有所资助,假如各人有任何疑问请给我留言,小编会及时回复各人的。在此也非常感谢各人对脚本之家网站的支持!
假如你觉得本文对你有资助,欢迎转载,烦请注明出处,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作