,location ~* .(jpg|jpeg|png|gif)$ {, valid_referers none blocked yourdomain.com *.yourdomain.com;, if ($invalid_referer) {, return 403;, },},
`,,这段代码会检查请求图片的HTTP Referer头部,如果它不在允许的列表中,那么服务器将返回403禁止访问。请将
yourdomain.com`替换为你的域名。在互联网中,图片盗链是一种常见的问题,图片盗链指的是其他网站直接链接到您网站上的图片,从而消耗您的带宽资源,有时还可能涉及到版权问题,为了防止这种情况发生,可以通过配置Nginx服务器来实现防盗链功能,小编将详细介绍如何使用Nginx的referer
指令来防止图片盗链。
理解Referer指令
referer
指令用于检查请求头中的Referer
字段,即来源地址,如果请求的来源不符合指定的条件,Nginx可以拒绝处理该请求,这对于防止图片盗链非常有用。
配置步骤
1. 打开Nginx配置文件
需要找到并打开Nginx的配置文件,通常位于/etc/nginx/nginx.conf
或在/etc/nginx/sitesavailable/
目录下的某个特定站点配置文件中。
2. 定位到server块
在配置文件中,定位到你想要添加防盗链功能的server
块,如果你只为特定的网站设置此功能,确保你编辑的是正确的server
块。
3. 添加referer指令
在server
块中,你可以添加location
块来指定哪些文件类型需要应用防盗链规则,如果你想保护所有的.jpg
和.png
图片文件,可以这样配置:
server { ... location ~* .(jpg|png)$ { valid_referers none blocked yourdomain.com *.yourdomain.com; if ($invalid_referer) { return 403; } } ... }
在这个配置中,valid_referers
定义了合法的来源。none
表示空来源,blocked
表示防火墙阻断的访问,yourdomain.com
和*.yourdomain.com
分别表示确切的主域名和任意子域名,如果请求的来源不在列表中,$invalid_referer
变量会被设置为1
,然后我们返回403错误。
4. 测试配置
完成配置后,保存并关闭配置文件,重新加载Nginx服务以应用更改:
sudo service nginx reload
只有来自yourdomain.com
及其子域的请求才能访问.jpg
和.png
图片,任何直接链接到你的图片的外部网站都会收到403禁止访问的错误。
相关问题与解答
Q1: 如果我希望允许特定的外部网站合法引用我的图片,该怎么办?
A1: 你可以通过在valid_referers
指令中添加那个网站的域名来实现,如果example.com
需要合法引用你的图片,可以这样修改:
valid_referers none blocked yourdomain.com *.yourdomain.com example.com;
Q2: 我怎样才能临时禁用防盗链,以便进行调试?
A2: 要临时禁用防盗链,你可以在location
块前添加一个#
注释掉整个块,或者注释掉if
语句。
if ($invalid_referer) { return 403; }
这样,所有请求都会忽略防盗链检查,直到你移除注释。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/954492.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复