Nginx 代理请求头中怎么透传客户端的 JA3 指纹信息给后端的 WAF 防火墙

落枫同学_6584

落枫同学_6584

2026-07-24

264人浏览

原创

必须在 nginx 的 stream{} 层用 nginx-ssl-ja3 模块提取 ja3,通过 proxy_set_header 透传至 waf,并在 waf 控制台启用对应 tls 指纹识别功能;http 层 lua 提取不可靠且不推荐。

nginx 代理请求头中怎么透传客户端的 ja3 指纹信息给后端的 waf 防火墙

要在 Nginx 代理层把客户端的 JA3 指纹透传给后端 WAF(如阿里云独享版、华为云 WAF),核心是:在 TLS 握手阶段提取 JA3,再通过自定义 HTTP Header 安全传递,最后由 WAF 解析并执行策略。这不是简单加个 proxy_set_header 就能生效,必须分三步协同——提取、封装、识别。

JA3 必须在 Stream 层提前提取

JA3 是 Client Hello 阶段生成的 TLS 指纹,HTTP 层(http{} 块)无法获取。必须用 stream{} 上下文配合扩展模块:

  • 编译安装 nginx-ssl-ja3 模块(适配 OpenSSL 3.x + Nginx 1.25+),启用后可直接使用变量 $stream_ssl_ja3
  • 在 stream 块中配置 ssl_preread on,确保 TLS 握手未解密前就完成指纹提取
  • 不能依赖 $http_ssl_ja3(该变量需 HTTP 层解析,已错过 Client Hello 时机)

用 proxy_protocol 或自定义 Header 向 WAF 透传

WAF 通常部署在 Nginx 后方或旁路,需明确指定传输方式:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
  • 若 WAF 支持 PROXY 协议(如四层负载均衡模式),在 stream 的 upstream 中开启 proxy_protocol on,并在 WAF 侧启用 PROXY 解析
  • 更通用的做法:在 http 块的 location 中,用 proxy_set_header X-Forwarded-Tls-Ja3 $stream_ssl_ja3 透传(注意:该变量需由 stream 层提前注入,常见做法是 stream → http 转发时携带)
  • 避免使用含特殊字符(如空格、换行)的原始值;JA3 是标准 32 字符 hex,可直接透传,无需 base64 编码

WAF 控制台需主动启用并配置 JA3 规则

仅透传 Header 不够,WAF 必须知道该字段含义并启用匹配能力:

  • 在 WAF 控制台开启“TLS 指纹标识”或类似功能(华为云称“TLS 指纹识别”,阿里云独享版支持自定义 header 提取)
  • 填写透传 header 名称,例如 X-Forwarded-Tls-Ja3
  • 在精准访问控制规则中添加条件:“TLS 指纹(JA3) 包含 cd08e31494f9531f560d64c695473da9”——这个值来自爬虫工具指纹库,不是随机生成
  • 建议搭配 IP + JA3 联合画像:同一 IP 出现多个 JA3,或高频命中黑名单指纹,直接阻断

不推荐在 HTTP 层用 Lua 提取 JA3

OpenResty 的 lua-resty-ja3 虽可用,但存在明显缺陷:

  • 必须等 TLS 握手完成、请求进入 HTTP 阶段才执行,此时 Client Hello 已被 Nginx 内部丢弃,JA3 实际不可靠
  • 性能开销大,且与原生 $stream_ssl_ja3 存在精度差异(如 SNI、ALPN 等字段处理逻辑不同)
  • 真实用户切换浏览器/插件会导致 JA3 变化,WAF 策略应设为“高危指纹立即拦截”,而非“非白名单即拒绝”

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2503

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6450

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5846

10

nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

403

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3587

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

6305

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

581

5

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.07.09

1496

5

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

2024.08.07

3978

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习