惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
IT之家
IT之家
博客园 - Franky
Stack Overflow Blog
Stack Overflow Blog
宝玉的分享
宝玉的分享
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
H
Help Net Security
V
V2EX
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
博客园 - 叶小钗
J
Java Code Geeks
博客园 - 【当耐特】
月光博客
月光博客
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件

博客园 - 张占岭

keycloak~缓存对象的介绍与作用 wso2-apim-mcp2改版分析 mcp1和mcp2对比 为什么前端项目使用ts比js要多了 多个IDP的用户联合方案的分析 apisix~forward-auth外部认证 springboot~关于构造方法注入和字段注入的选择 apisix~OpenResty各阶段的介绍 keycloak~aud受众字段的作用及如何生成 wso2~关于workbuddy中mcp在wso2中的授权端点 k8s~避免调度资源碎片化 WEB安全~csrf介绍 WEB安全~DPoP的介绍 WEB安全~csp的介绍 什么是中间人攻击 WEB安全~xss的介绍 k8s~pod资源限制和JVM的XMX配置 关于对wso2和keycloak的token交换的调研 keycloak~实现OAuth 2.0 Token Exchange backstage~实体的介绍及它们的关系 backstage~openapi的接入与protobuf的对比 backstage~将java服务添加到backstage backstage~对接github和gitlab backstage~开始一个backstage应用 apisix~graphQL的支持 wso2几个核心项目介绍 docker~BuildKit的介绍 k8s~secret资源的使用 算法~时间戳计算两个日期是否为同天同时同分 wso2~4.5升级到4.6需要更新的数据表
apisix~response-rewrite响应头重写
张占岭 · 2026-08-04 · via 博客园 - 张占岭

在 Apache APISIX 中,将请求头某个值写入到响应头,使用 response-rewrite 插件来实现。

这个插件专门用于在 APISIX 返回响应给客户端之前,修改响应的各种属性,包括状态码、响应体和响应头。

response-rewrite 插件配置中的 headers.set 字段非常关键。它的值可以是一个常量,也可以是一个或多个 NGINX 变量,并且支持使用 $ 前缀来引用。

因为请求头(Request Headers)在 APISIX 处理过程中会被转换成相应的 NGINX 变量,所以你可以直接在 headers.set 中引用它们。

配置示例

下面是一个配置示例,它展示了如何将名为 X-User-Id 的请求头值(注意请求头中的减号要变成下划线),写入到名为 X-User-Id-From-Request 的响应头中:

{
  "plugins": {
    "response-rewrite": {
      "headers": {
        "set": {
          "X-User-Id-From-Request": "$http_x_user_id"
        }
      }
    }
  }
}

配置解释

  • "X-User-Id-From-Request":这是你想要添加到响应中的新响应头名称
  • "$http_x_user_id":这是 response-rewrite 插件支持的 NGINX 变量,用于读取原始的请求头。http_ 是 NGINX 变量中表示请求头的前缀,请求头名称中的 -(连字符)需要转换为 _(下划线)并转为小写。

response-rewrite 插件的其他功能

除了设置响应头,该插件还支持:

  • 添加 (add) 和移除 (remove) 响应头:操作顺序为 addremoveset
  • 修改状态码:通过 status_code 字段修改返回的 HTTP 状态码。
  • 重写响应体:通过 body 字段完全替换响应体,或通过 filters 字段使用正则表达式部分替换。
  • 条件执行:通过 vars 字段配置执行条件,例如仅在响应状态码为 200 时生效。

备选方案简述

  • echo 插件:虽然也可以通过 headers 字段添加响应头,但官方文档明确警告它主要用于示例和学习,不应在生产环境中使用
  • 自定义插件:如果需要非常复杂的逻辑,可以开发一个自定义插件。但 response-rewrite 是官方提供的、功能全面且生产可用的标准解决方案,足以满足绝大多数需求。

总结

response-rewrite 插件是实现你需求的标准、强大且生产可用的方法。通过使用 headers.set 字段并正确引用以 $http_ 开头的 NGINX 变量,可以轻松将请求头的值写入到响应头中。