valid_referers指令是Nginx配置中用于限制请求来源(Referer)的一个功能。Referer是HTTP头部的一部分,用于表示当前请求的来源页面的URL。该指令的作用是通过设置允许的来源,来控制哪些Referer可以访问当前Nginx服务器上的资源,从而防止未经授权的访问和资源盗用。

具体来说,valid_referers的作用如下:

  1. 防止盗链(Hotlinking):盗链是指其他网站在未经授权的情况下直接引用你网站上的资源,比如图片、视频等。通过设置valid_referers指令,可以限制只有指定的来源才能访问资源,从而防止其他网站的盗链行为。

  2. 防止未经授权的访问:如果你希望某些资源只对特定的网站或合作伙伴开放,可以设置valid_referers来限制只有这些合法的来源才能访问,从而防止未经授权的访问。

  3. 防止资源的滥用和浪费:有时候某些资源可能是有限的或者需要付费获取,通过设置valid_referers,可以控制哪些来源可以获取这些资源,避免资源被滥用或浪费。

  4. 提高网站安全性:通过限制请求来源,可以提高网站的安全性,减少恶意请求和攻击。

一、valid_referers的使用方法

1、打开Nginx配置文件:

1
sudo vi /etc/nginx/nginx.conf

或者,你也可以在Nginx的sites-available目录下找到对应的配置文件进行编辑。

2、在配置文件中找到需要添加valid_referers指令的位置,通常位于locationserver部分。在这个位置添加以下代码:

1
2
3
4
5
6
7
location / {
valid_referers none blocked example.com www.example.com;
if ($invalid_referer) {
return 403;
}
# 其他配置
}

3、配置参数解释:

valid_referers:指定允许的请求来源。

none:不允许任何来源访问。

blocked:阻止所有来源访问。

npm8.com www.npm8.com:允许来自npm8.comwww.npm8.com这两个来源访问。

4、使用通配符:

你也可以使用通配符来指定允许的来源,例如:

1
2
3
4
5
6
7
location / {
valid_referers none blocked *.npm8.com;
if ($invalid_referer) {
return 403;
}
# 其他配置
}

在这个例子中,所有以.npm8.com结尾的来源都将被允许访问。

5、其他指令:

valid_referers结合了另外两个相关指令:$invalid_refererif$invalid_referer是一个变量,如果来源不在valid_referers中,它将被设置为1。接着,if指令用来判断是否$invalid_referer是1,如果是,则返回403错误。

6、验证配置文件:

使用以下命令验证 Nginx 配置文件是否有语法错误:

1
sudo nginx -t

7、重新加载Nginx配置:

配置文件修改后,需要重新加载 Nginx 配置使其生效。可以使用以下命令进行重新加载:

1
sudo nginx -s reload

需要注意的是,使用valid_referers可以在一定程度上防止盗链,但并不能完全避免。因为HTTP头部中的Referer信息可以被伪造或禁用,对于敏感资源,建议结合其他更严格的身份验证和访问控制方法来保护。同时,合理设置valid_referers是非常重要的,以确保不会误封合法的请求来源。

二、注意事项

  1. valid_referers并不能完全阻止盗链和恶意访问,因为Referer可以被伪造或禁用。因此,对于敏感资源,还需要其他更严格的身份验证和访问控制手段。

  2. 在使用valid_referers时,需要仔细设置允许的来源,确保没有遗漏合法来源或者包含不需要的来源。

  3. 为了更好地保护资源,可以结合其他Nginx的模块和功能,比如HTTP身份验证模块、防火墙规则等。

总的来说,valid_referers是一个用于限制请求来源的有用工具,可以帮助你保护网站资源和提高网站的安全性。但在使用时需要谨慎设置,结合其他安全措施,以确保网站的正常运行和数据安全。