Nginx:valid_referers参数指定域名访问

发布于 2022-11-07  2202 次阅读


今天在搜索公司的域名的时候,突然发现有个不认识的第三方域名绑定到了我们自己的后台管理系统上,所以决定给我们的服务器加一个限制,只能指定域名能访问,他的域名解析过来返回403无权访问。搜索发现了一个Nginx参数valid_referers,valid_referers参数可以用于做防盗链。

valid_referers 参数其实就是白名单的意思,他的参数就是允许访问的配置

valid_referers 参数说明

valid_referers    none | blocked | server_names | string …;

none:缺少“Referer”请求头;

blocked:“Referer” 请求头存在,但是它的值被防火墙或者代理服务器删除。这些值都不以“http://” 或者 “https://”字符串作为开头;

server_names:“Referer” 请求头包含某个虚拟主机名;

任意字符串:定义一个服务器名和可选的URI前缀。服务器名允许在开头或结尾使用“*”符号。当nginx检查时,“Referer”请求头里的服务器端口将被忽略;

正则表达式:必须以“~”符号作为开头。 需要注意的是表达式会从“http://”或者“https://”之后的文本开始匹配;

如果不允许通过文件直链进行访问和下载,只能在限定的域名中引用和下载,删除valid_referers这行代码中的noneblocked这两个值即可

我的配置:

location /server {
	#只允许从domain.com发起访问
	valid_referers none blocked domain.com;
	if ($invalid_referer) {
		return 403;
	}
}


欢迎欢迎~热烈欢迎~