作者ChinaLeng 发布于 8个月前

介绍

通常来说个人网站不希望别的网站盗用自己的图片和视频,毕竟流量这些都是白花花的银子(如果你是土豪可以忽略这点~~),

这个时候就需要再nginx里面配置一些参数来防盗链。

配置

这边解析个测试域名(test.czkup.cn),查看一下nginx里面的配置。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log off;
    }

这是关于访问后缀为gif|jpg|jpeg|png|bmp|swf文件时的配置。访问是不受限制的。

# curl http://test.czkup.cn/liuyan.png -I
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 03 Nov 2020 08:15:52 GMT
Content-Type: image/png
Content-Length: 3085
Last-Modified: Tue, 03 Nov 2020 06:40:39 GMT
Connection: keep-alive
ETag: "5fa0fb67-c0d"
Expires: Thu, 03 Dec 2020 08:15:52 GMT
Cache-Control: max-age=2592000
Accept-Ranges: bytes

这个时候访问可以成功。

现在把这个配置修改一下。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        valid_referers none blocked test.czkup.cn;
        if ($invalid_referer) {
            return 403;
        }
        expires      30d;
        error_log off;
    }

valid_referers这个语法后面有几个参数:valid_referers [none|blocked|server_names]

none

表明头部请求参数Referer为空的情况下。

blocked

表明头部请求参数Referer不为空,但是里面的值被代理或防火墙删除了,通常这个值都不以http://https://开头

server_names

表示一个或多个主机名,多个主机名用空格隔开。
配置好后,我们在测试一下。

这是不带http_referde 请求,可以看到访问正常。

# curl http://test.czkup.cn/liuyan.png -I
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 03 Nov 2020 09:10:33 GMT
Content-Type: image/png
Content-Length: 3085
Last-Modified: Tue, 03 Nov 2020 06:40:39 GMT
Connection: keep-alive
ETag: "5fa0fb67-c0d"
Expires: Thu, 03 Dec 2020 09:10:33 GMT
Cache-Control: max-age=2592000
Accept-Ranges: bytes
这是带非法http_referde请求的结果

# curl -e "http://www.baidu.com"  http://test.czkup.cn/liuyan.png -I
HTTP/1.1 403 Forbidden
Server: nginx
Date: Tue, 03 Nov 2020 09:11:02 GMT
Content-Type: text/html
Content-Length: 146
Connection: keep-alive

上面带了非法http_referde请求的话就是会返回403,说明我们刚刚配置的已经生效了。


再试一次带合法http_referde请求状态

# curl -e "http://test.czkup.cn"  http://test.czkup.cn/liuyan.png -I
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 03 Nov 2020 09:19:25 GMT
Content-Type: image/png
Content-Length: 3085
Last-Modified: Tue, 03 Nov 2020 06:40:39 GMT
Connection: keep-alive
ETag: "5fa0fb67-c0d"
Expires: Thu, 03 Dec 2020 09:19:25 GMT
Cache-Control: max-age=2592000
Accept-Ranges: bytes

屏蔽ip

最近查看访问日志看到很多404的请求。

需要屏蔽一些ip。

打开nginx配置文件。在对应的server的里面加上需要屏蔽的ip

deny 1.2.3.4;  屏蔽单个ip
标签:

0条评论