首页 > 系统相关 >Nginx配置referer校验,实现简单的防盗链

Nginx配置referer校验,实现简单的防盗链

时间:2023-04-21 12:22:05浏览次数:36  
标签:abc 请求 server Nginx referer Referer com 防盗链

1、Nginx Referer模块

nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求。当一个请求头的Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点。构造Referer的请求很容易实现,所以使用这个模块并不能100%的阻止这些请求。

2、valid_referers 指令

语法: valid_referers none | blocked | server_names | string … ;

配置段: server, location

指定合法的来源'referer', 他决定了内置变量$invalid_referer的值,如果referer头部包含在这个合法网址里面,这个变量被设置为0,否则设置为1. 需要注意的是:这里并不区分大小写的.

 

参数说明:

none:请求头缺少Referer字段,即空Referer
blocked:请求头Referer字段不为空(即存在Referer),但是值被代理或者防火墙删除了,这些值不以“http://”或“https://”开头,通俗点说就是允许“http://”或"https//"以外的请求。
server_names:Referer请求头白名单。
arbitrary string:任意字符串,定义服务器名称或可选的URI前缀,主机名可以使用*号开头或结尾,Referer字段中的服务器端口将被忽略掉。
regular expression:正则表达式,以“~”开头,在“http://”或"https://"之后的文本匹配。

3、示例

server {
listen 80 ;
server_name img.abc.com;
# 必须使用域名访问

if ($host != 'img.abc.com') {
return 403 ;
}

# 拦截非法referer
valid_referers none www.abc.com img.abc.com ;
if ($invalid_referer) {
return 403 ;
#rewrite ^.*$ http://www.baidu.com/403.jpg;
}
charset utf-8;
location / {
…………


上面配置合法的Referer为 www.abc.com / img.abc.com 和 无Referer(浏览器直接访问,就没有Referer) ; 其他非法Referer请求过来时, $invalid_referer 值为1 , 就return 403 , 或者重定向到一个403图片。
————————————————
版权声明:本文为CSDN博主「打杂员工」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/luyinxing1/article/details/109511851

标签:abc,请求,server,Nginx,referer,Referer,com,防盗链
From: https://www.cnblogs.com/gaoyanbing/p/17339933.html

相关文章

  • 关于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代......
  • nginx 安装
    评:nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。正式开始前,编译环境gccg++开发库之类的需要提前装好,这里默认你已经装好。ububtu平台编译环境可以使用以下指令apt-getinstallbuild-essentialapt-getinstalllibtoolcento......
  • nginx location规则以及优先级详解
    nginx配置文件里往往有多个location来区分不同的路径来执行不同的配置 在nginx配置文件中,location主要有这几种形式:1、~#使用波浪符“~”区分大小写正则匹配,如location~/abc{}2、~*#不区分大小写的正则匹配,如location~*/abc{}3、^~#匹配路径的前缀,如......