Nginx设置Referer来防止盗图的实现方法
如果服务器的图片被别的网站盗链,将影响服务器的带宽以及访问速度,这时我们就需要设置图片文件或视频文件的防盗链功能;
防盗链功能,简单来说就是你可以直接访问该资源,但是不能将我的资源链接放到你自己的服务器上让别人访问,尤其是图片或视频这种比较大的文件,容易导致服务器响应很慢。
如果不是图床,还真怕别的网站直接使用本站图片。这样子流量很可能一下子就被刷光了,毕竟CDN都是白花花的银子买来的。 因此,还是设置一个防盗链吧,Nginx就可以完成这个功能了。
一般来说,遵照HTTP协议实现的浏览器,在从A网站访问B网站时,都会带上当前网站的URL,以表明此次点击是从何而起的。因此, Nginx的这个模块也是依靠这个来实现,所以,如果骇客不加此头部,还是没法愉快的防盗图。
Nginx官网文档如下:
Syntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, location
nginx referer指令简介
nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求.我们应该牢记,伪装Referer头部是非常简单的事情,所以这个模块只能用于阻止大部分非法请求.我们应该记住,有些合法的请求是不会带referer来源头部的,所以有时候不要拒绝来源头部(referer)为空的请求.
因此,我们可以在 server 或者 location 块加上代码,我是保存为 valid_referers.conf :
valid_referers none blocked server_names; if ($invalid_referer) { return 403; }
然后在对应需要的地方加上 include /etc/nginx/valid_referers.conf ,当然,执行这个的前提是已经把 valid_referers.conf 放到对应机器上的 /etc/nginx/valid_referers.conf 路径下。
示例:
location /articles/img { include /etc/nginx/valid_referers.conf; root /data/blog/code; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
使用referer指令配置Nginx服务器来防止图片盗链
由于nginx不支持.htaccess,所以,从这个方面直接去防止是行不通的,我们要通过修改配置文件来解决. 首先,我们找到需要防盗链的域名的conf文件,路径:/usr/local/nginx/conf/vhost/,比如guance.com.conf.先备份下原文件,然后找到下面的部分: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } 将它修改为: location ~ .*\.(gif|jpg|jpeg|png|bmp
-
nginx利用referer指令实现防盗链配置
实现图片防盗链: location ~* \.(gif|jpg|png|webp)$ { valid_referers none blocked domain.com *.domain.com server_names ~\.google\. ~\.baidu\.; if ($invalid_referer) { return 403; #rewrite ^/ http://www.domain.com/403.jpg; } root /opt/www/image; } 以上所有来至domain
-
Nginx设置Referer来防止盗图的实现方法
如果服务器的图片被别的网站盗链,将影响服务器的带宽以及访问速度,这时我们就需要设置图片文件或视频文件的防盗链功能: 防盗链功能,简单来说就是你可以直接访问该资源,但是不能将我的资源链接放到你自己的服务器上让别人访问,尤其是图片或视频这种比较大的文件,容易导致服务器响应很慢. 如果不是图床,还真怕别的网站直接使用本站图片.这样子流量很可能一下子就被刷光了,毕竟CDN都是白花花的银子买来的. 因此,还是设置一个防盗链吧,Nginx就可以完成这个功能了. 一般来说,遵照HTTP协议实现的浏览器,在从A
-
nginx设置上传目录无执行权限的方法
nginx上也很简单,我们使用location..如下: 复制代码 代码如下: location ~ ^/upload/.*\.(php|php5)$ { deny all; } 其中upload换为你要设置的目录名字 这条规则的含义是匹配请求连接中开头是/upload/,中间匹配任意字符,结尾匹配.php或者.php5的页面,最后利用deny all禁止访问,这样就防止了上传目录的脚本执行权限
-
Nginx 设置域名转发到指定端口的实现方法
进入 /usr/local/nginx/conf sudo cd /usr/local/nginx/conf 创建 vhost 目录 sudo mkdir vhost 修改 nginx.conf 文件 sudo cp nginx.conf nginx.conf_back sudo vim nginx.conf 设置访问机器的 hosts 文件,以便模拟访问,我这里使用的机器是 windows 10,hosts 文件在 C:\Windows\System32\drivers\etc 文件夹下. 创
-
Java 通过设置Referer反盗链
下面是完整的代码. 复制代码 代码如下: package cn.searchphoto.util; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import java.util.zip.GZIPInputStream;
-
C#使用iTextSharp设置PDF所有页面背景图功能实例
本文实例讲述了C#使用iTextSharp设置PDF所有页面背景图功能的方法.分享给大家供大家参考.具体如下: 在生成PDF 的时候,虽然可以在页面中设置背景图. 但有些内容过长夸页面的时候,就很难设置背景图,变成了空白背景的页面! 以下是重新生成每一页 PDF 背景图功能代码! public void SetPdfBackground(string pdfFilePath) { //重新生成的 PDF 的路径 string destFile = HttpContext.Current.Serv
-
详解php伪造Referer请求反盗链资源
有些产品为了防止自己的产品被盗链访问,会采用反盗链措施,如封闭型生态的音乐网站和视频网站,他们已经为了版权付费,自然不希望你免费使用他们的资源.但因为很多人专门研究盗链,因此我们也需要了解下盗链.反盗链和逃避反盗链的原理. 盗链 引用百度百科对盗链的定义: 盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率.受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何
-
使用php伪造referer的方法 利用referer防止图片盗链
什么是HTTP Referer简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理.比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站.Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了.我的问题我刚刚把feed阅读器改变为Grega
-
Nginx设置日志打印post请求参数的方法
[前言] 我们项目的短信功能是接第三方,原来对接第三方给我们回执确认请求是get请求我们在排查问题的时候可以通过nginx的日志拿到对方给我们请求的参数:最近我们换了另外一家第三方,新的第三方给我们的确认请求是post,遇到问题排查,发现nginx没有打印具体参数,于是查阅一些资料和运维一起做了实验和线上调整,调整后我们可以拿到请求参数,更方便我们排查问题: [Nginx设置打印post请求参数] 一.Nginx配置文件(nginx.conf)设置打印post请求参数:在h
-
centos6.5服务器安装Nginx设置服务和开机自启的方法
本文介绍了centos6.5服务器安装Nginx设置服务和开机自启的方法,分享给大家,也给自己留个笔记 1.安装Nginx及其依赖 首先是老套路,使用ssh链接服务器,还记得以前的代码吗? ssh -t 用户名@服务器IP或者域名 -p 22 <!--用户名一般是root,方便操作,我的登录代码如下--> ssh -t root@acheng1314.cn -p 22 在终端中输入上面命令按下回车,要求我们输入密码,这个密码是不可见的,所以一定要输入正确. 链接到服务器后,我们切换到常用的安装
-
nginx设置目录白名单、ip白名单的实现方法
1.设置目录白名单:对指定请求路径不设置限制,如对请求路径为api目录下的请求不做限制,则可写为 server{ location /app { proxy_pass http://192.168.1.111:8095/app; limit_conn conn 20; limit_rate 500k; limit_req zone=foo burst=5 nodelay; } location /app/api { proxy_pass http://192.168.1.111:8095/app
随机推荐
- oracle数据与文本导入导出源码示例
- 浅谈bootstrap源码分析之tab(选项卡)
- Shell脚本生成随机密码的若干种可能
- extjs实现选择多表自定义查询功能 前台部分(ext源码)
- 在asp.net下实现Option条目中填充前导空格的方法
- Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
- Go语言对JSON进行编码和解码的方法
- SQLServer ADODB.Recordset 错误“800a0e78”,对象关闭时,不允许操作
- C++实现位图排序实例
- C语言中初始、增加和删除进程信号的操作方法简介
- javascript实现获取字符串hash值
- 程序员必备,程序员四大忌
- mssql 30万条数据 搜索文本字段的各种方式对比
- sql复制表结构和数据的实现方法
- JavaScript中的各种操作符使用总结
- 一个奇葩的最短的 IE 版本判断JS脚本
- CentOS 6 启动流程详细介绍
- Android自定义控件实现可左右滑动的导航条
- 浅谈Java多线程编程中Boolean常量的同步问题
- 兼容ie ff div 层 打开+关闭+ 拖动+遮罩+移动+动画改变高宽