下面的内容包括:
1 Nginx Referer 模块
2 valid_referers 指令
3 测试Nginx 防盗链
1 Nginx Referer模块
当一个请求头的Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点。
这个头可以随意的伪造,因此,使用这个模块并不能100%的阻止这些请求,绝大多数拒绝的请求来自一些典型的浏览器,可以认为这些典型的浏览器并不能提供一个”Referer”头,甚至是那些正确的请求。
2 valid_referers 指令
语法:valid_referers [none|blocked|server_names] …
默认值:no
使用字段:server, location
这个指令在referer头的基础上为 $invalid_referer 变量赋值,其值为0或1。
可以使用这个指令来实现防盗链功能,如果valid_referers列表中没有Referer头的值, $invalid_referer将被设置为1。
参数可以使如下形式:
none 意为不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)
blocked 意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
server_names 为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。
例如:
- location /photos/ {
- valid_referers none blocked www.mydomain.com *.mydomain.com;
-
- if ($invalid_referer) {
- return 403;
- }
- }
3 测试
3.1 正常的Referer
firefox 浏览器(get)http://bbs.test.com/uc_server/images/noavatar_small.gif
3.1.1 请求头信息原始头信息
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection keep-alive
Host bbs.test.com
User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1
3.1.2 nginx 日志格式
- log_format access '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" $http_x_forwarded_for';
3.1.3 nginx 日志referer字段
10.0.100.82 - - [24/Aug/2012:10:50:00 +0800] "GET / HTTP/1.1" 200 6166 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1" 192.168.4.33 #注意:"-" 表示referer空白,这里直接在浏览器打开一个图片
3.2. 使用Referer防盗链
3.2.1 nginx 代码
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
- {
- valid_referers none blocked test.com *.test.com;
- if ($invalid_referer)
- {
- #rewrite ^/ http://$host/logo.png;
- return 403;
- }
- expires 300d;##
- }
3.2.2 firefox 浏览器 URL
URL:http://192.168.57.75/index.html
- cat /usr/local/nginx/html/index.html
- <html>
- <head>
- <title>Welcome to nginx!</title>
- </head>
- <body bgcolor="white" text="black">
- <center><h1>Welcome to nginx!</h1></center>
- <img border="0" style="max-width:400px" alt="" src="http://bbs.test.com/uc_server/images/noavatar_small.gif">
- </body>
- </html>
注意:index.html 包含noavatar_small.gif
3.2.3 请求头信息原始头信息
Accept image/png,image/*;q=0.8,*/*;q=0.5
Accept-Encoding gzip, deflate
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection keep-alive
Host bbs.test.com
Referer http://192.168.57.75/
User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1
3.2.4 nginx 日志referer字段
192.168.4.33 - - [24/Aug/2012:10:55:05 +0800] "GET /uc_server/images/noavatar_small.gif HTTP/1.1"403 162 "http://192.168.57.75/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1" -
注意:返回403 状态码
分享到:
相关推荐
本文将详细介绍如何利用 Nginx 的 `referer` 指令进行防盗链配置。 `Referer` 字段在 HTTP 请求头中用于指示用户是从哪个 URL 跳转到当前请求的页面的。在图片防盗链的场景下,如果 Nginx 服务器接收到一个请求,其...
本篇文章将详细介绍如何在Nginx中配置防盗链。 ### 一、需求分析 通常情况下,网站所有者希望防止其他网站未经许可直接引用其服务器上的视频和图片资源,因为这可能会导致大量的流量损失,特别是对于付费的流媒体...
【标题】:“Nginx优化与防盗链”涵盖了Nginx服务器在性能调优和防止非法访问方面的核心知识点。Nginx作为一个高性能的HTTP和反向代理服务器,其高效的处理能力、轻量级的特性以及丰富的模块化设计,使其成为众多...
- **`return` 命令**:可以用来返回 HTTP 状态码,常用于防盗链等安全配置。 ```nginx location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked ...
【Nginx防盗链配置详解】 Nginx防盗链(Anti-leech)是一种网络服务器安全策略,用于防止其他网站未经许可直接引用你的服务器上的资源,如图片、视频等。这通常发生在图片分享网站或者流媒体服务中,防止恶意网站...
在本文中,我们将深入探讨Nginx服务器在处理跨域访问和防盗链方面的配置。跨域访问控制和防盗链是Web服务器管理中两个重要的安全措施,它们对于保护网站资源和确保正常用户体验至关重要。 首先,我们来理解一下为...
因此,完全依赖Referer防盗链可能存在漏洞。 - 伪造Referer字段对一些技术熟练的攻击者来说并不困难,因此,这种防盗链策略并不能完全防止专业级别的盗链行为。 - 配置防盗链时,应考虑对搜索引擎和社交媒体的兼容...
通过以上配置,我们可以使Nginx 1.14.0高效地服务于静态资源,同时实现缓存控制、防盗链、错误页面自定义等功能。了解并熟练掌握这些配置技巧,将有助于提升网站的整体性能和用户体验。在实际部署中,还需要根据具体...
【Nginx与Apache防盗链配置方法】 在互联网上,防止其他网站未经许可直接引用(盗链)服务器上的资源,如图片、视频等,对于节省带宽和保护内容权益至关重要。Nginx和Apache作为两种广泛应用的Web服务器,都有各自...
Nginx图片防盗链配置是保护网站资源不被其他站点无授权引用的一种技术措施,它有助于减少不必要的带宽消耗和流量损失。以下是对Nginx图片防盗链配置的详细解释: 1. **基本原理**: 图片防盗链主要是通过检查HTTP...
本节课主要探讨了Nginx的高级用法,包括跨域处理、防盗链机制、缓存和压缩等方面的知识点。以下是详细内容: 一、Nginx核心功能回顾 1. 读取静态文件:Nginx擅长快速高效地处理静态文件,如HTML、CSS、JavaScript和...
Nginx防盗链 配置如下,可以和上面的配置结合起来 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.test.com ; if ($...
在本文中,我们将深入探讨如何在CentOS服务器上使用Nginx设置图片防盗链功能。防盗链的主要目的是防止其他网站未经许可直接引用你的服务器上的图片资源,从而节省宝贵的带宽和流量。 首先,我们需要了解Nginx配置...
为防止这种现象,我们可以利用Linux服务器上的Apache Web服务器进行防盗链和访问控制的设置。以下是一个详细的步骤和解释。 1. **理解Referer概念** Referer是HTTP头部的一个字段,它记录了用户是从哪个URL点击...
传统的Nginx防盗链方法可能包括使用Referer检查或者Access Key模块,但这里我们采用Lua脚本,因为这提供了更大的灵活性和定制化空间。 **一、生成处理过的下载链接** 在客户端(即提供下载链接的页面)的Nginx...
具体到防盗链的配置,需要利用Nginx的`valid_referers`指令来定义合法的引用来源(即防盗链白名单),以及使用`$invalid_referer`变量来判断引用来源是否有效。`valid_referers`指令后可以跟随多个参数,这些参数...
Nginx服务器防盗链是一种防止其他网站盗用本站资源的防护技术。当其他网站的用户在未得到允许的情况下通过链接直接访问并下载本站资源时,防盗链功能能够有效阻止这一行为。在Nginx服务器中实现防盗链主要通过修改其...
超文本传输协议中的Referer作用 Referer:null 表示请求者直接访问 Referer:blocked 一般为防火墙设备添加的 Referer:URL 表示URL中的主机告诉请求者的间接访问 图中jpg.good.com显然是一台专门用户存放图片的...
Nginx 防盗链配置案例配置 防盗链是指防止他人非法盗用站点资源的技术手段。 - **配置示例**: ```nginx location ~ \.(jpg|jpeg|gif|png|css|js)$ { valid_referers none blocked server_names; if ($...