六、Nginx 防盗链
2016-03-13 17:09
676 查看
盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载。 尤其热门资源的盗链,对网站带宽的消耗非常大,本文通过nginx的配置指令location来实现简单的图片和其它类型文件的防盗链。 1 upstream 192.168.1.101 { server 192.168.1.101:8080; server 192.168.1.100:8080; # hash_method crc32; } server { listen 80; server_name 192.168.1.101; charset utf-8; location / { root html; index index.html index.htm; proxy_pass http://192.168.1.101; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 100m; } location ~ .(jpe?g|png|gif)$ { valid_referers 192.168.1.3; if ($invalid_referer) { return 403; } } }
一:一般的防盗链如下: location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.jzxue.com jzxue.com ; if ($invalid_referer) { rewrite ^/ http://www.jzxue.com/retrun.html; #return 403; } } 第一行:gif|jpg|png|swf|flv 表示对gif、jpg、png、swf、flv后缀的文件实行防盗链 第二行: 表示对www.ingnix.com这2个来路进行判断 if{}里面内容的意思是,如果来路不是指定来思是,如果来路不是指定来路就跳转到http://www.jzxue.com/retrun.html页面,当然直接返回403也是可以的。
实现方法如下: 实现方法如下: 1. 下载NginxHttpAccessKeyModule模块文件:http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz; 2. 解压此文件后,找到nginx-accesskey-2.0.3下的config文件。编辑此文件:替换其中的”$HTTP_ACCESSKEY_MODULE”为”ngx_http_accesskey_module”; 3. 用一下参数重新编译nginx: ./configure --add-module=path/to/nginx-accesskey <<pestd add 上面需要加上原有到编译参数,然后执行: make && make install
三:使用第三方模块ngx_http_accesskey_module实现Nginx防盗链
4. 修改nginx的conf文件,添加以下几行: location /download { accesskey on; accesskey_hashmethod md5; accesskey_arg "key"; accesskey_signature "mypass$remote_addr"; } 其中: accesskey为模块开关; accesskey_hashmethod为加密方式MD5或者SHA-1; accesskey_arg为url中的关键字参数; accesskey_signature为加密值,此处为mypass和访问IP构成的字符串。 访问测试脚本download.php: <? $ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']); $output_add_key="<a href=http://www.jzxue.com/download/G3200507120520LM.rar?key=".$ipkey.">download_add_key</a><br />"; $output_org_url="<a href=http://www.jzxue.com/download/G3200507120520LM.rar>download_org_path</a><br />"; echo $output_add_key; echo $output_org_url; ?> 访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403 Forbidden错误。 参考: NginxHttpAccessKeyModule http://xok.la/2009/03/nginx_http_accesskey_module_referer.html[/code]盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载。 尤其热门资源的盗链,对网站带宽的消耗非常大,本文通过nginx的配置指令location来实现简单的图片和其它类型文件的防盗链。 Nginx 的配置文件 : location ~ .(jpe?g|png|gif)$ { valid_referers none blocked mysite.com *.mysite.com; if ($invalid_referer) { return 403; } } 用 (“|”) 来分隔你想保护的文件的扩展名。 valid_referers指令包含允许访问资源的网站列表,不在列表中请求的返回403。下面是valid_referers指令参数的解释 : none - 匹配没有Referer的HTTP请求(Matches the requests with no Referer header). blocked - 请求有Referer ,但是被防火墙或者代理服务器修改,去掉了https://或http:// (Matches the requests with blocked Referrer header). *.mydomain.com - 匹配mysite.com的所有二级域名(Matches all the sub domains of mydomain.com. Since v0.5.33, * wildcards can be used in the server names). 除了使用location对文件访问进行限制,也可以对特定目录进行限制,下面的配置会禁止访问images目录下所有文件 location /images/ { valid_referers none blocked mysite.com *.mysite.com; if ($invalid_referer) { return 403; } } 以上配置都是简单通过验证请求头来实现防盗链,如果盗链的网站通过伪造来路的http请求时不能屏蔽。
相关文章推荐
- LNMP搭建,nginx整合php-fpm即fastCGI实现,以及nginx的多虚拟主机配置
- linux 安装 nginx
- linux搭建php5 nginx
- 四、Nginx负载均衡upstream
- FastDFS安装
- nginx禁止访问某个文件和目录(文件夹)
- Nginx优化具体,应对高并发
- 三、nginx301跳转302跳转
- 通过配置CPU参数 worker_cpu_affinity 提升nginx性能
- 二、Nginx变量
- nginx安装与部署
- Nginx(一):基础与配置文件简介
- A little bottlepy example with uwsgi and nginx
- Nginx 安装配置(转载)
- linux下安装nginx
- 安装Nginx服务
- 使用Nginx实现301重定向详解
- 1、在linux服务器centos虚拟机搭建nginx网站
- 阿里云ECS+Gunicorn+Supervisor+Nginx部署Flask
- Nginx配置多个项目使用同一端口号的办法