服务器资源防盗链

2022年07月30日

导读

通过Nginx或者Apache相关代码可以有效防止服务器资源(如图片)被盗链,减少服务器资源的流量浪费,让服务器运行更高效快速。

如果发现服务器资源被别人盗链,导致服务器运行速度下降,可以通过Nginx或者Apache相关设置可以有效防止服务器资源(如图片)被盗链,减少服务器资源的流量浪费,让服务器运行更高效快速。下面详细解析Nginx和Apache相关代码的设置。

Nginx - 返回444或403错误

server { server_name www.domain.com; root /srv/domain.com-2023/_site; location ~* \.(禁止盗链文件后缀1|禁止盗链文件后缀2|禁止盗链文件后缀3)$ { expires 30d; valid_referers 允许访问域名1 允许访问域名2 允许访问域名3; if ($invalid_referer) { return 444或403; } } }

在实际防盗链返回444比返回403效果更好,原因为:

403:明确告诉对方“你被拒绝了”,换句话说盗链者知道别你拒绝了,会换个域名或者IP继续盗链你资源

444:什么都不告诉,直接掐断连接,换句话说盗链者根本不知道这个资源是否还存在

Nginx - 跳转外域图片

server { server_name www.domain.com; root /srv/domain.com-2023/_site; location ~* \.(禁止盗链文件后缀1|禁止盗链文件后缀2|禁止盗链文件后缀3)$ { expires 30d; valid_referers 允许访问域名1 允许访问域名2 允许访问域名3; if ($invalid_referer) { rewrite ^/ 跳转图片链接; } } }

Apache - 跳转外域图片

编辑.htaccess文件,并添加以下代码

RewriteEngine on RewriteCond %{HTTP_REFERER} !允许访问域名1 [NC] RewriteCond %{HTTP_REFERER} !允许访问域名2 [NC] RewriteCond %{HTTP_REFERER} !允许访问域名3 [NC] RewriteRule .*\.(禁止盗链文件后缀1|禁止盗链文件后缀2|禁止盗链文件后缀3)$ 跳转图片链接 [R,NC,L]

详细说明:

1. 禁止盗链文件后缀就是不想给别人盗链的文件后缀,如jpg、png、gif、webp、css、js等,每个文件后缀“|”符号隔开。

2. 允许访问域名就是允许访问这些服务器资源的域名,不需要带上http或https协议,简单来说就是不受盗链限制的白名单域名,这个域名允许使用通配符,如服务器都允许Google访问,可以设置为*.google.com,

Nginx:每个白名单域名用空格隔开

Apache: 每个白名单域名用一行RewriteCond,有几个白名单域名就有几行RewriteCond

3. 跳转图片链接就是当出现有盗链服务器资源的时候,自动跳转到指定图片链接,需要带上http或https协议,如https://www.baidu.com/img/baidu_jgylogo3.gif

服务器资源防盗链 - 当前页面

2022年07月30日

通过Nginx或者Apache相关代码可以有效防止服务器资源(如图片)被盗链,减少服务器资源的流量浪费,让服务器运行更高效快速。