您的位置:

nginx防盗链的详细介绍

一、nginx防盗链设置白名单

1、为什么要设置白名单?

对于某些需要公开访问的资源,比如图片等,我们是允许其他网站引用的,这时候我们就需要设置白名单,白名单内的域名可以访问我们的资源,其他域名则不能访问。

2、如何设置白名单?

    location / {
        valid_referers none blocked example.com *.example.com;
        if ($invalid_referer) {
            return 403;
        }
    }

代码解释:

第一行valid_referers none blocked example.com *.example.com;表示设置白名单,只允许example.com和其子域名引用,其他域名被视为无效referer。

第二行if ($invalid_referer) {return 403;}表示当referer为非法域名时拒绝访问。

二、nginx防止ddos

1、什么是ddos攻击?

ddos(分布式拒绝服务攻击)是指利用多台计算机对一个或多个目标发动攻击,以至于服务器压力过大而导致服务拒绝。

2、如何防止ddos攻击?

    http {
        limit_conn_zone $binary_remote_addr zone=perip:10m;
        limit_conn perip 10;
    }
    server {
        location / {
            limit_req zone=perip burst=20 nodelay;
        }
    }

代码解释:

第一段代码设置了限制连接的数量,每个ip地址最多同时连接10次。

第二段代码设置了限制请求的数量,每个ip地址每秒最多发送20个请求,超过的部分将被延迟到下一秒发送。

三、nginx防盗链原理

1、什么是盗链?

盗链是指用户在未经授权的情况下,将别人的图片或网页嵌入自己的网页中,从而消耗服务器带宽和资源,导致资源浪费。

2、如何防止盗链?

在图片等资源被访问时,nginx会根据请求头Referer来判断请求是否合法,若合法则正常返回,否则返回403权限不足错误。

我们可以通过设置白名单等方式来控制合法referer的范围,从而有效防止盗链。

四、nginx防ddos

1、ddos攻击的危害?

ddos攻击可以导致网站瘫痪,用户无法正常访问,影响网站的正常运作。

2、如何防止ddos攻击?

我们可以使用nginx防范ddos攻击的方法:

(1)控制连接数量:设置最大连接数和最大请求数,防止客户端对服务器进行频繁的连接和请求。

(2)设置超时时间:当客户端连接持续过长时间时,服务器将自动断开连接,防止攻击者长时间占用服务器资源。

(3)使用高效的缓存策略和请求处理方式:使用缓存技术可以减轻服务器压力,防止攻击者对后端服务器进行攻击。

五、nginx防盗链配置

1、常用的防盗链配置方式

    location / {
        if ($http_referer !~ "^http://(www\.)?example.com") {
            return 403;
        }
    }

代码解释:

当请求头Referer不是以http://www.example.com或http://example.com开头时,返回403权限不足错误。

六、nginx防盗链本地图片加载失败

1、如何防止本地图片被盗链?

    location / {
        valid_referers none blocked example.com *.example.com;
        if ($invalid_referer) {
            root html/404;
            rewrite ^(.*)$ /404.jpg break;
        }
    }

代码解释:

当请求头Referer非法时,将请求重定向到一个特定的路径,显示一张本地的图片而不是被盗链的图片。

七、nginx防盗链的作用

1、为什么要防止盗链?

防止盗链可以减少服务器资源浪费,提高服务安全性和稳定性,保障网站的正常运作。

2、怎么做防盗链?

可以使用nginx的防盗链策略,设置白名单或者根据Referer来判断请求是否合法,以此达到防盗链的目的。

八、nginx防盗链lua

1、什么是lua?

Lua是一种轻量级脚本语言,被广泛应用于游戏开发、图形应用、网络编程、嵌入式系统等领域。

2、如何使用lua实现防盗链?

    location / {
        access_by_lua_block {
            local referer = ngx.var.http_referer
            if referer ~= nil then
                if not ngx.re.match(referer, "^http[s]?://example.com") then
                    ngx.exit(ngx.HTTP_FORBIDDEN)
                end
            else
                ngx.exit(ngx.HTTP_FORBIDDEN)
            end
        }
    }

代码解释:

使用access_by_lua_block指令,在访问每一个请求时都会执行lua代码,根据Referer头部来判断请求是否合法。

九、nginx防盗链设置教程

1、如何设置白名单防盗链?

首先在nginx.conf中配置valid_referers指令,设置允许的域名,然后在location中添加判断条件,当请求头Referer非法时返回403错误。

    http {
        ...
        server {
            location / {
                valid_referers none blocked example.com *.example.com;
                if ($invalid_referer) {
                    return 403;
                }
                ...
            }
        }
        ...
    }

2、如何使用lua脚本来防盗链?

使用access_by_lua_block指令,在访问每一个请求时都会执行lua代码,判断请求头Referer是否合法,若不合法则返回403错误。

    http {
        ...
        server {
            location / {
                access_by_lua_block {
                    local referer = ngx.var.http_referer
                    if referer ~= nil then
                        if not ngx.re.match(referer, "^http[s]?://example.com") then
                            ngx.exit(ngx.HTTP_FORBIDDEN)
                        end
                    else
                        ngx.exit(ngx.HTTP_FORBIDDEN)
                    end
                }
                ...
            }
        }
        ...
    }

十、nginx防盗链设置方法

1、通过nginx.conf文件进行设置

在nginx.conf中配置valid_referers指令,设置允许的域名,然后在location中添加判断条件,当请求头Referer非法时返回403错误。

2、使用lua脚本进行防盗链设置

使用access_by_lua_block指令,在访问每一个请求时都会执行lua代码,判断请求头Referer是否合法,若不合法则返回403错误。