首页 > 系统相关 >【Nginx】valid_referers 参数绕坑指南

【Nginx】valid_referers 参数绕坑指南

时间:2023-04-21 12:35:28浏览次数:45  
标签:referers http 绕坑 Nginx valid 403 blocked refer

Nginx 提供了valid_referers参数用于检查url中refer参数的状态,首先看下官方配置:

Syntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, location
1
2
3
能看到valid_referers总共有4种值可以使用,none、blocked、server_names、string。

我们暂且概括一下有3种值可以用:

1.none //直接访问url,而不使用任何网站或链接的跳转,$http_referer变量的值是空的。
2.blocked //请求标头中存在“ Referer”字段,但其值已被防火墙或代理服务器删除;这些值是不以“ http://”或“ https://”开头的字符串;
3.字符串 //配置域名列表,支配通配符、正则表达式写法。
看到很多人这么配:

valid_referers none blocked *.example.com;
if ($invalid_referer) {
#rewrite ^/ http://www.example.com/;
return 403;
}
1
2
3
4
5
这么写表示:如果"refer为空"、或"refer不以http/https开头"、或"域名为example.com的server_name" 都是有效的refer,也即valid_referers的值为0(允许访问),除此之外为1(返回403)。

这种写法可能和很多小伙伴的本意并不一样,这么写的结果就是把非法的refer也加白了,很多人的想法可能是:

“只允许refer白名单的域名访问”,其它返回403。
如果是这种需求,配置应该这么写:

valid_referers *.example.com;
if ($invalid_referer) {
#rewrite ^/ http://www.example.com/;
return 403;
}
1
2
3
4
5
去掉是none和blocked参数,也即:除了refer白名单的域名允许访问,其它都返回403(也包含none和blocked的refer也返回403)。

这么表达可能更准确些,大家弄清楚搜索出来的配置,不是所有的配置都能直接用,需要弄明白配置的真正意义,贴配置的同学也要有责任心,乱贴配置容易产生误导。

官方文档:http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers
————————————————
版权声明:本文为CSDN博主「chromiumer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chromiumer/article/details/111849283

标签:referers,http,绕坑,Nginx,valid,403,blocked,refer
From: https://www.cnblogs.com/gaoyanbing/p/17339937.html

相关文章

  • NGINX根据客户端真实ip限制/referer限制
    最近后端服务被攻击,所有接口被疯狂调用,记录一次nginx应对攻击的方案,包括黑白名单、referer限定等。一、NGINX根据用户真实IP限源1、nginx日志打印在nginx.conf配置文件中的http模块打印log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'......
  • Nginx配置referer校验,实现简单的防盗链
    1、NginxReferer模块nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求。当一个请求头的Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点。构造Referer的请求很容易实现,所以使用这个模块并不能100%的阻止这些请求。2、valid_referers指令......
  • 关于nginx如何对外部隐藏nginx版本号-以及Response Headers中的Server字段的nginx版本
    对于nginx作为web/http服务器发布了一个网站时,外部用户就可以通过浏览器进行访问到默认情况下,如果外部用户,访问了一个不存在的资源时,就会返回404错误,如下图所示这里我们可以发现在返回404错误时,下面居然也输出了web服务器(nginx)及其版本号1.22.1当然从 ResponseHeaders中......
  • ingress nginx精确匹配
    如果要精确匹配/third/factory/device/healthcheck路径,可以在rules.http.paths中直接配置如下:-path:/third/factory/device/healthcheckpathType:Exactbackend:service:name:test-blavaplus-api-serviceport:number:80这里的关键是将p......
  • ingress nginx匹配某个固定路径
    这个Ingress资源使用的是NginxIngressController,要将path配置为/third/factory/device/healthcheck的location,可以在annotations中添加如下配置:nginx.ingress.kubernetes.io/rewrite-target:/$2然后在rules.http.paths中使用以下方式配置:-path:/third(/factory/de......
  • Nginx的负载均衡策略
    Nginx的负载均衡策略个人博客地址:https://note.raokun.top拥抱ChatGPT,国内访问网站:https://www.playchat.top共六种:轮询、权重、ip_hash、least_conn、fair、url_hash1、轮询(RoundRobin)负载均衡策略:这是一种基本的负载均衡策略,将请求顺序转发给每个后端服务器,每个后端......
  • xshell断开ssh远程窗口,nginx进程被杀死
    主要原因:是openssh8+以上的版本对安全策略做了修改解决方法:在/usr/lib/systemd/system/[email protected] 配置增加KillMode=process[Unit]Description=OpenSSHper-connectionserverdaemonDocumentation=man:sshd(8)man:sshd_config(5)Wants=sshd-keygen.serviceAfter=sshd-ke......
  • docker安装nginx
    1、搜索nginxdockersearchnginx2、拉取nginx镜像库dockerpullnginx:latest3、查看获取的镜像dockerimages4、启动容器:dockerrun--namenginx-d-p80:80--privileged=true-vD:/nginx/conf/nginx.conf:/etc/nginx/nginx.conf-vD:/nginx/conf/conf.d:/e......
  • Nginx配置proxy_pass
    评:nginx配置proxy_pass,需要注意转发的路径配置1、location/test/{proxy_passhttp://t6:8300;}2、location/test/{proxy_passhttp://t6:8300/;}上面两种配置,区别只在于proxy_pass转发的路径后是否带“/”针对情况2,如果访问url=http://server/test/t......
  • 安装nginx-http-concat和nginx平滑升級
    评:Nginx_concat_module是淘宝开发的基于Nginx减少HTTP请求数量的扩展模块,主要是用于合并减少前端用户Request的HTTP请求的数量下载后把它放在/usr/local/src/文件夹中,到时候nginx需要指定该目录这个需要重新编译nginx,所以顺便把nginx升级了下。下载最新版本Linux代......