讲师中心 微信公众号
AI工具推荐 视频效率加速

如何记录自定义变量记录后端返回的特定响应头 $upstream_http_...

秋静姑娘_4965

秋静姑娘_4965

发布时间:2026-05-24 23:24:46

|

1034人浏览过

|

来源于php中文网

原创

Nginx中需用map指令在http块中将$upstream_http_*变量映射为自定义变量才能记录响应头,因$upstream_http_*仅在proxy_pass成功后有效且不可直接用于log_format。

如何记录自定义变量记录后端返回的特定响应头 $upstream_http_...

在 Nginx 中,可以通过 $upstream_http_* 变量获取上游(后端)响应头的内容,但要“记录”这些值(比如写入 access log 或传递给其他模块),需先用 map 或 set(配合第三方模块)将其提取为可记录的自定义变量。

使用 map 指令提取响应头为自定义变量

map 是最标准、无需额外模块的方式,适用于将上游响应头映射为可在日志、proxy_set_header 等上下文中使用的变量。

  • 必须在 http 块中定义,不能放在 server 或 location 内
  • 源变量只能是 Nginx 内建变量(如 $upstream_http_x_request_id),不能是运行时动态生成的变量
  • 目标变量名建议用下划线分隔,避免与内置变量冲突

示例:提取后端返回的 X-Request-ID 和 X-RateLimit-Remaining

Livestream Script Generator
Livestream Script Generator

直播带货脚本:话术、节奏、互动、促单。适用于主播、电商运营、MCN机构。

下载
http {
    map $upstream_http_x_request_id $log_request_id {
        default $upstream_http_x_request_id;
        ""      "-";  # 若响应头不存在或为空,记为 "-"
    }
<pre class="brush:php;toolbar:false;">map $upstream_http_x_ratelimit_remaining $log_rate_limit_remaining {
    default $upstream_http_x_ratelimit_remaining;
    ""      "-";
}

log_format main '$remote_addr - $remote_user [$time_local] '
                 '"$request" $status $body_bytes_sent '
                 '"$http_referer" "$http_user_agent" '
                 'rid="$log_request_id" rl="$log_rate_limit_remaining"';

access_log /var/log/nginx/access.log main;

}

在 location 中通过 proxy_pass 触发 upstream_http_ 变量

$upstream_http_* 变量仅在成功代理到 upstream 后才有效。若请求未进入 upstream(如被 rewrite、return 或内部跳转中断),对应变量为空字符串。

  • 确保 location 使用了 proxy_pass,且后端实际返回了目标响应头
  • 响应头名称自动转为小写并用下划线替代连字符(如 X-Request-ID → $upstream_http_x_request_id)
  • 若后端返回多个同名响应头,Nginx 默认只取第一个(遵循 RFC,不支持多值合并)

注意事项与常见问题

直接在 log_format 中使用 $upstream_http_* 不可靠 —— 因为日志格式在请求开始时解析,而 upstream 响应头在响应返回后才可用。必须通过 map 提前声明依赖关系,让 Nginx 知道该变量需延迟求值。

  • 变量名拼写必须完全匹配转换规则:X-Custom-Header → $upstream_http_x_custom_header
  • 如果后端响应头含空格或特殊字符,Nginx 会原样保留,但日志中可能影响解析(建议后端规范输出)
  • 若需修改或添加响应头再透传,用 proxy_hide_header / add_header 配合,不影响 $upstream_http_* 的原始值

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

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

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

2843

2023.08.11

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

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

7130

2024.03.19

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

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

6666

2024.03.19

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3883

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

954

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

6746

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5530

2024.08.16

Go 语言 HTTP 编程与中间件开发教程合集
Go 语言 HTTP 编程与中间件开发教程合集

全面讲解 Go 语言 HTTP 编程的核心知识,涵盖 net/http 标准库的 Server/Handler/HandlerFunc 体系、DefaultServeMux 路由注册与自定义路由器、Request / ResponseWriter 请求响应处理、中间件(Middleware)链式设计模式与常见中间件(日志/CORS/认证/限流)开发、http.Client 的超时配置与连接池管理、Cookie / Session 处理、

581

2026.05.08

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
零基础精通 PS 视频教程
零基础精通 PS 视频教程

共268课时 | 120.5万人学习

前端工程师必备技能—PS切图
前端工程师必备技能—PS切图

共11课时 | 2.2万人学习

麦子学院Photoshop切片视频教程
麦子学院Photoshop切片视频教程

共13课时 | 4.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn