nginx--防盗链

盗链

通过在自己网站里面'引用别人的资源链接','盗用'人家的劳动和资源

referer

referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息

正常的referer信息

none:请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息。

blocked:请求报文有referer⾸首部,但无有效值,比如为空。

server_names:referer首部中包含本主机名及即nginx 监听的server_name。

arbitrary_string:自定义指定字符串,但可使用*作通配符。

regular expression:被指定的正则表达式模式匹配到的字符串,要使用~开头,例如:

~.*\.magedu\.com。

实现web盗链

配置nginx.conf文件

复制代码
    log_format access_json '{"@timestamp":"$time_iso8601",'
        '"host":"$server_addr",'
        '"clientip":"$remote_addr",'
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'
        '"http_host":"$host",'
        '"uri":"$uri",'
        '"domain":"$host",'
        '"xff":"$http_x_forwarded_for",'
        '"referer":"$http_referer",'
        '"tcp_xff":"$proxy_protocol_addr",'
        '"http_user_agent":"$http_user_agent",'
        '"status":"$status"}';
    access_log  logs/access.log  access_json;

    server {
        listen       80;
        server_name  www.xfxq.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /data/nginx/html;
            index  index.html index.htm;
        }

配置index.html文件

复制代码
<html>
<body>
<meta charset="utf-8">
<a href="http://www.fxq.com">盗链</a>
<img src="http://www.fxq.com/1.jpg">
</body>
</html>
</html>

查看图片

查看日志

实现防盗链

http:// https://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers

格式

复制代码
valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/ 
               ~\.google\.; 定义有效的referer

if ($invalid_referer) {  如是使用其他的无效的referer访问:
    return 403;  返回状态码403
}  

定义防盗链

复制代码
server {
  listen 80;
  listen       443 ssl;
  ssl_certificate  /apps/nginx/certs/www.fxq.com.crt;
  ssl_certificate_key /apps/nginx/certs/www.fxq.com.key;
  ssl_session_cache shared:sslcache:20m;
  ssl_session_timeout 10m;
  server_name www.fxq.com;
  location / {
     root /data/nginx/html/pc;
     index index.html;
    }
  location = /favicon.ico {
     root /data/nginx/html/pc;
  }
  location = /1.jpg{
     root /data/nginx/static; 
     valid_referers none blocked server_names
                  ~\.google\.; 
     if ($invalid_referer) {  
             return 403;
       }  
    }
  }    
[ro

访问结果

相关推荐
GDAL3 小时前
Nginx TCP/UDP四层转发(Stream模块)完整深入教程
tcp/ip·nginx·udp
江畔柳前堤4 小时前
HBM:大语言模型时代的「算力血液」——从内存墙到带宽革命的深度拆解
服务器·人工智能·windows·目标检测·语言模型·自然语言处理·软件工程
不会就选b5 小时前
Linux之信号(二)
linux·运维·服务器
2401_865382506 小时前
密评与等保的关系:不是替代,而是互补
网络·信息化造价
GlueNa2SiO36 小时前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习
寺中人7 小时前
Linux 基础命令入门实战教程:从零掌握常用操作,新手快速上手
linux·运维·服务器·shell·linux 命令·linux 基础教程·linux 入门
小张成长计划..7 小时前
【Linux】18:基础IO
linux·运维·服务器
白狐_7988 小时前
408计算机网络第3章:PPP协议——帧格式、LCP/NCP、状态机与真题精讲
网络·计算机网络·智能路由器
MIXLLRED8 小时前
解决——Ubuntu远程桌面指令更换网络
linux·网络·ubuntu
扬帆破浪9 小时前
文档自动检查:用 Claude Code、OpenClaw 审 WPS 文件:预览、批注、改正文
运维·服务器·wps