• Nginx 防盗链设置


    何谓‘盗链’

    此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量。

    比较明显的是图片资源,自己的服务器不存储图片资源,而使用别人的图片资源,这样无需承担图片的存储跟流量所产生的费用。总之,是非常无耻的行径。

    如何防盗链

    要实现防盗链,需要了解HTTP协议中的请求头部 Referer 头域和采用 URL 格式表示访问当前网页或者文件的源地址。通过该头域的值,我们可以检测到访问目标资源的源地址,即我们知道是谁在访问我们的资源。这样,如果检测到 Referer 头域中的值并不是自己站点的URL,就采取阻止措施,实现防盗链。

    Nginx 指令 valid_referers

    Nginx 配置中有一个指令 valid_referers ,用来获取 Referer 头域中的值,并且根据该值的情况给 Nginx 全局变量 $invalid_referer 变量将会被赋值为 1。valid_referers 指令的语法为:
    valid_referers none | blocked | server_names | strings ....;

    • none, 检测 Referer 头域不存在的情况。
    • blocked,检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。这种情况该头域的值不以 “http://” 或 “https://” 开头。
    • server_names ,设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某一个。

    有了 valid_referers 指令和 $invalid_referer 变量,就能通过 Rewrite 功能来实现防盗链。有两种实现方案,一种是根据请求资源的类型,一种是根据请求目录。以请求资源类型为例子:

    location ~ .*.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|jpeg|png|swf|flv)$ {
        valid_referers none blocked *.myweb.com;
        if ($invalid_referer) {
    	    rewrite ^/ http://www.myweb.com/logo.gif;
    	    #return 403;
        }
    }
    
  • 相关阅读:
    liunx 利用管道线kill多个进程
    将多个学生平均分配到多个学校的方法示例
    mysql 根据查询条件进行update
    Mysql 使用临时表比较数据差异以及 临时表的优化
    Netcore 将汉字转化为拼音
    mysql 清除多列重复数据,只保留其中一条
    使用Mysql 存储过程和游标进行同步数据
    Culture is not supported. (Parameter 'name') u0002� is an invalid culture identifier.
    Swagger 过滤特定控制器配置方法(Swashbuckle.AspNetCore 5.0.0)
    System.Linq Distinct 方法使用
  • 原文地址:https://www.cnblogs.com/flowerszhong/p/7296443.html
Copyright © 2020-2023  润新知