介绍
通常来说个人网站不希望别的网站盗用自己的图片和视频,毕竟流量这些都是白花花的银子(如果你是土豪可以忽略这点~~),
这个时候就需要再nginx里面配置一些参数来防盗链。
配置
这边解析个测试域名(test.czkup.cn),查看一下nginx里面的配置。
1 2 3 4 5 6
| location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log off; }
|
这是关于访问后缀为gif|jpg|jpeg|png|bmp|swf文件时的配置,访问是不受限制的。
1 2 3 4 5 6 7 8 9 10 11 12
| # 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
|
这个时候访问可以成功。
现在把这个配置修改一下。
1 2 3 4 5 6 7 8 9 10
| 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]
表明头部请求参数Referer为空的情况下。
表明头部请求参数Referer不为空,但是里面的值被代理或防火墙删除了,通常这个值都不以http://或https://开头
表示一个或多个主机名,多个主机名用空格隔开。
配置好后,我们在测试一下。
这是不带http_referde 请求,可以看到访问正常。
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 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请求的结果。
1 2 3 4 5 6 7 8
| # 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请求状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 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