Nginx: ngx_http_referer_module ngx_http_secure_link_module
Module ngx_http_referer_module (nginx.org)
Nginx中有一个指令 valid_referers. 该指令可以用来获取 Referer 头域中的值,并且根据该值的情况给 Nginx全局变量 invalidreferer赋值。如果Referer头域中没有符合validreferers指令的值的话,invalidreferer赋值
如果Referer头域中没有符合validreferers指令的值的话,invalid_referer变量将会赋值为1. valid_referers 指令基本语法如下: valid_referers none | blocked | server_names | string none: 检测Referer头域不存在的情况。 blocked: 检测Referer头域的值被防火墙或者代理服务器删除或伪装的情况。那么在这种情况下,该头域的值不以"http://" 或 "https://" 开头。 server_names: 设置一个或多个URL,检测Referer头域的值是否是URL中的某个。 1. 根据请求文件类型实现防盗链配置实列如下: server { listen 80; server_name www.rabble.com; location ~* ^.+\.(gif|jpg|jpeg|png|swf|flv|rar|zip)$ { valid_referers none blocked $server_name 192.168.8.11 www.rabble.io *.rabble.io ~\.rabble\.; if ($invalid_referer) { #return 403; rewrite ^/ http://www.xxx.com/images/forbidden.png; } } } 如上基本配置,当有网络连接对以 gif、jpg、png为后缀的图片资源时候、当有以swf、flv为后缀的媒体资源时、或以 rar、zip为后缀的压缩资源发起请求时,如果检测到Referer头域中没有符合 valid_referers指令的话,那么说明不是本站的资源请求。 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ 该配置的含义是 设置防盗链的文件类型。 valid_referers none blocked www.xxx.com www.yyy.com *.baidu.com *.tabobao.com; 可以理解为白名单,允许文件链出的域名白名单,如果请求的资源文件不是以这些域名开头的话,就说明请求的资源文件不是该域下的请求,因此可以判断它是盗链。因此如果不是该域下的请求,就会使用 Rewrite进行重定向到 http://www.xxx.com/images/forbidden.png 这个图片,比如这张图片是一个x或其他的标识,然后其他的网站就访问不了你这个图片哦。 2. 根据请求目录实现防盗链的配置实列如下: server { listen 80; server_name www.rabble.com; location ^~ /images/ { valid_referers none blocked $server_name 192.168.8.11 www.rabble.io *.rabble.io ~\.rabble\.; if ($invalid_referer) { #return 403; #rewrite ^/ http://www.xxx.com/images/forbidden.png; rewrite ^/ $scheme://$server_name/images/forbidden.png; } location = /images/forbidden.png { } } }
server { listen 80; listen [::]:80; server_name vend.intrinsic.io *.intrinsic.io; root /usr/share/nginx/html; error_log /var/log/nginx/error.log debug; rewrite_log on; #date -d '10 minutes' +%s #echo -n '1652526929/index.html192.168.8.21 secret' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d = #curl --include --compressed --ipv4 --data 'md5=YC7iw3o4Y8KM-wjX5K_FRQ&expires=1652526929' --get primary.intrinsic.io/index.html --header 'Host: rtyu' --cookie 'a=11;b=22' location / { secure_link $arg_md5,$arg_expires; secure_link_md5 "$secure_link_expires$uri$remote_addr secret"; if ($secure_link = "") { return 403 '$uri'; } if ($secure_link = "0") { return 410 '$uri $remote_addr'; } return 201 '$secure_link:$secure_link_expires\n'; } #echo -n 'index.htmlsecret' | openssl md5 -hex #curl --include --compressed --ipv4 --get primary.intrinsic.io/prefix/b26af76f5cc7418f36e132161968c37b/index.html --header 'Host: rtyu' --cookie 'a=11;b=22' location /prefix/ { secure_link_secret secret; if ($secure_link = "") { return 403; } rewrite ^ /secure/$secure_link; } location /secure/ { alias html/; internal; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2021-05-14 MySQL 批量删除表