You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Kong Gateway配置请求Header白名单以过滤上游请求?

Kong Gateway 请求Header白名单配置方案

当然有实现方案,不需要额外找第三方插件,用Kong自带的能力就能搞定,以下是几种常用方式:

方案一:利用request-transformer插件反向实现(适合简单场景)

如果你的白名单Header数量固定且不需要动态调整,可以通过先删除所有Header,再保留指定Header的方式实现:

  • 为目标路由/服务启用request-transformer插件
  • 配置插件参数:
    • 设置remove.headers为*(删除所有请求Header)
    • 设置append.headers为你需要保留的Header列表,比如X-User-Id,X-Request-Trace

注意:这种方式会强制保留指定Header,如果请求中原本没有这些Header,插件会自动添加空值的Header到上游。如果需要只保留请求中实际存在的白名单Header,建议用下面的方案。

方案二:使用pre-function插件编写自定义Lua逻辑(灵活且轻量)

pre-function是Kong自带的插件,可以在请求转发到上游前执行自定义Lua代码,刚好适合做Header白名单过滤:

  • 为目标路由/服务启用pre-function插件
  • 在access阶段添加以下Lua代码(替换allowed_headers里的列表为你的白名单):
local allowed_headers = {
    ["x-user-id"] = true,
    ["x-request-trace"] = true,
    ["host"] = true -- 通常Host Header需要保留,可根据实际需求调整
}

-- 遍历所有请求Header,删除不在白名单内的项
for header_name, _ in pairs(ngx.req.get_headers()) do
    local lower_header = string.lower(header_name)
    if not allowed_headers[lower_header] then
        ngx.req.clear_header(header_name)
    end
end

这种方式会精准保留请求中实际存在的白名单Header,删除所有其他Header,完全符合你的需求。

方案三:自定义独立Lua插件(适合需要复用或复杂逻辑场景)

如果需要在多个路由/服务复用这个逻辑,或者要添加更复杂的规则(比如动态从配置中心拉取白名单),可以自定义一个简单的Lua插件:

  • 按照Kong插件规范创建新插件,核心逻辑和方案二的Lua代码一致
  • 把白名单做成插件配置参数,方便在Kong Manager或Admin API中调整
  • 打包并安装插件到Kong集群

这种方式更易于维护和扩展,适合企业级场景。

内容的提问来源于stack exchange,提问作者tdmadeeasy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:10:19