Nginx 教程

Nginx 教程 Nginx 简介 Nginx 源码架构分析 Nginx 编译安装 Nginx(Tengine) 编译安装 Nginx(OpenResty) 编译安装 Nginx 配置简述 Nginx Docker 容器化配置

Nginx 核心配置指令

Nginx 核心配置指令 Nginx 配置文件 Nginx 进程配置指令 Nginx 端口监听:listen Nginx 主机名server_name Nginx 处理HTTP请求 Nginx 路由匹配规则:localhost Nginx 重定向配置:rewrite Nginx 根目录配置:root Nginx 访问路径别名:alias Nginx 文件判断:try_files Nginx 零复制:sendfile Nginx 日志记录配置

Nginx HTTP模块

Nginx 镜像模块 Nginx 请求头控制模块 Nginx IP访问控制模块 Nginx 用户cookie模块 Nginx 并发连接数限制模块 Nginx 首页处理模块 Nginx 请求频率限制模块 Nginx 页面缓存时间配置 Nginx gzip压缩及相关配置

Nginx Web服务

Nginx 静态资源服务器搭建 Nginx 文件下载服务器搭建 Nginx 伪动态SSI服务器 Nginx HTTPS服务器搭建 Nginx FastCGI模块配置简述 Nginx PHP服务器环境搭建 Nginx 基于FastCGI负载均衡 Nginx CGI网关接口 Nginx uWSGI模块配置 Nginx Python项目部署 Nginx 伪流媒体服务器搭建 Nginx HTTP2模块配置简述 Nginx WebDAV模块配置简述

Nginx 代理服务器

Nginx HTTP代理服务器 Nginx stream模块简述 Nginx TCP/UDP代理简述 Nginx 基于SSL的TCP代理服务器 Nginx gRPC代理服务器

Nginx 缓存

Nginx Web缓存配置 Nginx 代理缓存配置 Nginx Memcached 缓存模块 Nginx 反向代理缓存服务器配置 Nginx 客户端缓存控制

Nginx 负载均衡

Nginx 负载均衡模块 Nginx 负载均衡策略 Nginx 长连接负载均衡 Nginx upstream容错机制 Nginx upstream动态更新 Nginx TCP/UDP负载均衡

Nginx 日志管理监控

Nginx 日志分析简述 Nginx 访问日志配置 Nginx 错误日志配置 Nginx 日志归档配置 Nginx 日志分析工具 ELK Nginx 监控工具 Prometheus

Nginx 集群

LVS(Linux虚拟服务器)简介 Keepalived 配置简述 Nginx 集群负载搭建 Nginx 集群配置管理规划 Nginx 配置归档工具GitLab Nginx 配置修改工具Ansible Jenkins 安装与配置简述 Nginx 集群配置管理实例

Nginx 在 k8s 的应用

Kubernetes(k8s)系统简述 Kubernetes(k8s)集群部署 Kubernetes(k8s)网络通信 Nginx Ingress 简介 Nginx Ingress 安装部署 Nginx Ingress 配置映射 Nginx Ingress 注解


Nginx referer:请求头控制模块

referer 请求头控制模块可以通过设置请求头中的属性字段 Referer 的值控制访问的拒绝与允许。Referer 字段用来表示当前请求的跳转来源,由于该字段可能会涉及隐私权问题,部分浏览器允许用户不发送该属性字段,因此也会存在浏览器正常的请求头中无 Referer 字段的情况。

另外,有些代理服务器或防火墙也会把 Referer 字段过滤掉。通常情况下,伪造 Referer 字段的内容是很容易的,因此该模块主要用于浏览器正常发送请求中 Referer 值的过滤。

虽然通过 Referer 字段进行来源控制并不十分可靠,但用在防盗链的场景中还是基本可以满足需求的。该模块的内置配置指令如下表所示。

指令 作用域 默认值  指令说明
referer_hash_max_size server, location  2048 referer 指令中,存储变量的哈希表的大小
referer_hash_bucket_size server, location 64  referer 指令中,存储变量的哈希桶的大小
valid_referers server, location -- 当用户的 HTTP 头的属性字段 Referer 的值符合指令值的检测时,设置变量 $invalid_referer 为空

referer 指令值参数如下表所示。

参数名称 参数说明
none Referer 的值为空
blocked 代理服务器或防火墙过滤后的 Referer 值,这些值都不以 http:// 或 https:// 开头
server_names Referer 的值中包含一个服务器名

配置样例如下:

server{
    listen 8080;
    server_name nginxtest.org;
    root /opt/nginx-web/www;
    valid_referers none blocked *.nginxtest.org;
         # 当Referer为空或内容不包含"http://"或以"https://"开头的主机名为"*.nginxtest.
        # org"时允许访问
    if ($invalid_referer) {
        return 403;
    }
}

指令值为字符串时,既可以是包含前缀或后缀的主机名,也可以是包含主机名的 URI。

指令值为正则表达式时,必须以 ~ 开头,Nginx 将从"http://"或"https://"之后的字符串开始匹配。

默认变量 $invalid_referer 的值为 1,当 Referer 的值与指令值的内容匹配时,$invalid_referer 的值为空。