在Linux中,如何配置nginx防盗链?
在 Linux 中,配置 Nginx 防盗链主要通过 valid_referers
指令来实现。以下是详细的配置步骤和说明:
1.防盗链的原理
防盗链通过检查 HTTP 请求头中的 Referer
字段来判断请求来源:
- 如果请求来源是允许的域名,Nginx 会正常返回资源。
- 如果请求来源是未授权的域名(或者没有
Referer
字段),Nginx 会拒绝请求(返回 403 错误)。
2.配置步骤
2.1 编辑 Nginx 配置文件
打开 Nginx 配置文件,通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
。
2.2 添加防盗链配置
在 server
块中添加以下内容,以保护特定资源(如图片、视频等):
server {
listen 80;
server_name yourdomain.com;
location ~* \.(gif|jpg|jpeg|png|bmp|ico)$ {
valid_referers none blocked yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
return 403;
}
}
# 其他配置...
}
location ~* \.(gif|jpg|jpeg|png|bmp|ico)$
:匹配图片文件的扩展名,~*
表示正则表达式匹配且忽略大小写。valid_referers none blocked yourdomain.com *.yourdomain.com;
:none
:允许没有Referer
字段的请求(如直接输入 URL 的访问)。blocked
:允许被代理或防火墙隐藏了Referer
的请求。yourdomain.com
和*.yourdomain.com
:允许来自指定域名及其子域名的请求。
if ($invalid_referer)
:如果请求的来源不符合valid_referers
的规则,则变量$invalid_referer
为true
。return 403;
:返回 HTTP 状态码 403(禁止访问)。
2.3 测试配置文件语法
在保存配置文件后,测试配置是否正确:
sudo nginx -t
预期输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果有错误,检查配置文件中的语法问题并修复。
2.4 重启 Nginx 服务
重启 Nginx 使配置生效:
sudo systemctl restart nginx
3.测试防盗链功能
-
直接访问资源:在浏览器中输入图片的 URL(如
http://yourdomain.com/image.jpg
),应该可以正常访问。 -
从其他域名引用资源:在其他域名的网页中嵌入图片:
<img src="http://yourdomain.com/image.jpg" />
如果配置正确,Nginx 应该返回 403 错误。
4.高级配置
如果需要更复杂的规则,可以使用 map
指令结合正则表达式进行更精确的防盗链配置。
5.我的总结
综上所述,通过配置 valid_referers
指令,可以有效保护网站的静态资源,防止带宽被恶意消耗。在实际应用中,可以根据业务需求调整匹配规则和允许的域名,进一步优化配置。