博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态文件过期缓存、Nginx防盗链、访问控制
阅读量:6840 次
发布时间:2019-06-26

本文共 3214 字,大约阅读时间需要 10 分钟。

hot3.png

防盗链

盗链

  • 盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。

防盗链

  • 要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。有了referer跟踪来源,就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。

防盗链实例

  • 设定目录访问受限,配置blog.abc.com网站目录的访问受限,编辑虚拟主机配置文件
vi /etc/nginx/conf.d/bbs.aaa.com.conf
  • 添加如下内容
location ~ \.(png|gif|jpeg|bmp|mp3|mp4|flv)$    {        valid_referers none blocked server_names *.aaa.com;        if ($invalid_referer) {                return 403;        }    }
  • 测试配置文件是否有错误,并重新加载配置文件
[root@localhost blog.abc.com]# nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful[root@localhost blog.abc.com]# nginx -s reload
  • 给blog.abc.com上传一个1.jpeg的图片
  • 使用curl -e 命令来模拟referer测试防盗链是否成功
[root@localhost blog.abc.com]# curl -e "http://wwww.baidu.com" -x127.0.0.1:80 blog.abc.com/1.jpeg -IHTTP/1.1 403 ForbiddenServer: nginx/1.14.2Date: Sun, 17 Feb 2019 12:43:02 GMTContent-Type: text/htmlContent-Length: 169Connection: keep-alive[root@localhost blog.abc.com]# curl -e "http://bbs.aaa.com" -x127.0.0.1:80 blog.abc.com -IHTTP/1.1 200 OKServer: nginx/1.14.2Date: Sun, 17 Feb 2019 12:48:58 GMTContent-Type: text/html; charset=UTF-8Connection: keep-aliveX-Powered-By: PHP/7.3.2Link: 
; rel="https://api.w.org/"

Nginx访问控制

当我们的网站中有某一站点只是针对公司内部使用,禁止外网使用的时候可以使用访问控制来实现

  1. 编辑虚拟主机配置文件

    # vim /usr/local/nginx/conf/vhost/test.com.conf
  2. 添加如下内容

    allow 127.0.0.1;   //现实生产中,该白名单地址应设置为公司外网地址。         deny all;
  3. 使用curl命令测试,可以看到,使用指定白名单ip可以正常访问,使用没指定过的ip访问该站点就会受到限制。

    # curl -x127.0.0.1:80 test.com/admin/1.jpg fangwen kongzhi ceshi ` # curl -x192.168.254.131:80 test.com/admin/1.jpg  403 Forbidden  

    403 Forbidden


    nginx/1.15.3

设定指定目录下的PHP文件解析受限

  1. 编辑虚拟主机配置文件

    # vim /usr/local/nginx/conf/vhost/test.com.conf
  2. 添加内容

    location ~ .*(upload|image)/.*\.php$ { deny all; }
  3. 在test.com目录下创建一个upload目录,并写一个PHP文件1.php

  4. 测试配置文件是否有问题,并重新加载

    # /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root[@localhost](https://my.oschina.net/u/570656) ~]# /usr/local/nginx/sbin/nginx -s reload
  5. 使用curl测试限制解析是否成功,可以看到返回的代码是403,表示限制解析成功

    [root[@localhost](https://my.oschina.net/u/570656) ~]# curl -x127.0.0.1:80 test.com/upload/1.php   403 Forbidden

根据user_agent限制访问(可以拒绝网络爬虫爬走网站内容)

比如我想让谁访问我的网站,我就告诉他域名,如果不告诉别人域名,就说明我不想让他知道我的站点,这需要禁止搜索引擎在网络上爬取站点内容。可以通过user_agent来限制。

  1. 编辑虚拟主机文件

    [root[@localhost](https://my.oschina.net/u/570656) ~]# vim /usr/local/nginx/conf/vhost/test.com.conf
  2. 添加如下内容

    if ($http_user_agent ~* 'Spider/3.0|baidu|YoudaoBot|Tomato') { return 403; }
  3. 测试并重新加载配置文件 ..-t ...-s reload

  4. 使用curl测试,curl -A 可以模拟user_agent,发现返回的代码是403,表示实验成功。

    [root[@localhost](https://my.oschina.net/u/570656) ~]# curl -A "www.baidu.com" -x127.0.0.1:80 test.com -I HTTP/1.1 403 Forbidden Server: nginx/1.15.3 Date: Tue, 04 Sep 2018 17:57:37 GMT Content-Type: text/html Content-Length: 169 Connection: keep-alive

转载于:https://my.oschina.net/u/3731306/blog/3011166

你可能感兴趣的文章
iOS UIlabel内容之后添加全文/展开
查看>>
NSDate的具体用法
查看>>
android项目中记录ListView滚动停止位置与设置显示位置
查看>>
Android 自定义电池控件
查看>>
设计模式之强大的接口适配器模式,继承Thread or 实现Runnable?
查看>>
10个CSS3属性
查看>>
web前端研发工程师编程能力成长之路
查看>>
2012 RDS Remote App 对于win7的支持问题
查看>>
linux 程序、动态库、静态库内部添加版本号和编译时间
查看>>
代码和XIB结合开发
查看>>
我的友情链接
查看>>
MySQL原生密码认证
查看>>
什么是网络割接
查看>>
java web servelt
查看>>
mysql之优化小技巧
查看>>
Mint17 FireFox重装英文版问题
查看>>
linux下C++ 插件(plugin)实现技术
查看>>
GCD基础知识
查看>>
file invalid or corrupt". -vs2010
查看>>
各种yum源
查看>>