如何在 OpenResty Edge 中添加自定义响应头(无需重启)
在本教程中,我们将展示如何在 OpenResty Edge 中添加自定义响应头,且无需重启或重新加载服务器进程。
在 OpenResty Edge 中添加自定义响应头的步骤:
- 打开 OpenResty Edge 的 Admin Web 控制台,进入你的应用。
- 进入 “Page Rules”(页面规则),添加一条新规则。
- 添加 “Add response header”(添加响应头) 动作。
- 填写响应头的名称(如
X-TEST-EXTRA-HEADER)和值——值可以是静态字符串,也可以是内置变量(System Hostname或指定名称的Request Header)。 - 发布一个新版本,规则即同步推送到所有网关集群。
整个过程无需重新加载、重启服务器或二进制升级。若你还需要改写发往上游的请求头,可参阅《在 OpenResty Edge 中为上游请求设置不同的 Host 头》。
下面是带截图的完整操作演示。
将字符串作为值添加新的响应头
让我们进入 OpenResty Edge 的 Admin Web 控制台。这就是我们控制台的样例部署。每个用户都有自己的本地部署。我们可以继续使用之前的示例应用,“test-edge.com”。
进入该应用。
首先进入 “Page Rules” 页面。
点击此处添加新的页面规则。
添加一个动作。
我们选择 “Add response header”。
响应头有两个部分,它的名称和对应的值。
将响应头命名为 “X-TEST-EXTRA-HEADER”。
对于此处的值,您可以选择使用字符串或内置变量,我们先用字符串进行测试。
输入 “hello world”。
确保这个规则在任何现有的正常规则之前运行。
保存这个页面规则。
像往常一样,需要发布一个新的版本来推送我们刚才的改动。
发布!
新版本现在已经同步到所有的网关服务器上了。
现在,新的页面规则已推送到所有网关集群和服务器了。
这些配置的变化,不需要服务器重新加载、重启,或二进制升级。所以它是非常高效和可扩展的。
让我们在网关服务器上测试一下。
我们复制这个旧金山网关服务器的 IP 地址。
然后在终端上进行测试。
这里有我们添加的 “X-TEST-EXTRA-HEADER” 响应头。
以 “System Hostname” 作为值的内置变量
接下来,让我们试一下使用内置变量作为响应头的值。
编辑这个页面规则。
选择内置变量作为响应头的值。
目前我们为内置变量提供了两种选项。一种是 “Request Header”,这意味着您可以检索请求信息。您需要按名称指定 “Request Header”,例如 “Origin”、“Referer” 等。
另外一种是 “System Hostname”,它是我们之前设置好的网关服务器的名称。
我们来试试 “System Hostname”。
保存它。
和刚刚一样,我们需要发布来推送这个新的页面规则。
发布!
现在它已经被推送到所有的网关集群和服务器。
首先,我们可以检查之前服务器的主机名。
此网关服务器的主机名如下。
然后切换到终端。
“X-TEST-EXTRA-HEADER” 响应头的值,已更改为我们刚刚看到的主机名。
让我们测试另一个网关服务器,例如这个位于法兰克福的服务器,其主机名如下。
再次切回到终端。
现在响应头的值,是法兰克福服务器的主机名。
FAQ:OpenResty Edge 添加响应头常见问题
在 OpenResty Edge 中添加响应头需要重启服务器吗?
不需要。OpenResty Edge 将页面规则同步推送到所有网关集群,全程无需重新加载、重启或二进制升级,配置即时生效。
OpenResty Edge 的响应头值可以是动态的吗?
可以。除静态字符串外,还可使用内置变量作为响应头的值:System Hostname(网关服务器的主机名)或按名称指定的 Request Header(如 Origin、Referer)。
如何让同一个响应头在 OpenResty Edge 的所有网关服务器上生效?
在 OpenResty Edge 控制台发布一个新版本即可,页面规则会自动同步到所有网关集群和服务器,无需逐台配置。
OpenResty Edge 中 “Add response header” 和 “Set response header” 有什么区别?
Add response header 会追加一个响应头,同名的已有响应头会被保留;Set response header 则会覆盖同名的已有响应头。需要新增时用前者,需要强制改写时用后者。完整的动作说明可参阅官方文档 Response Header Actions。
关于 OpenResty Edge
OpenResty Edge 是一款专为微服务和分布式流量架构设计的全能型网关软件,由我们自主研发。它集流量管理、私有 CDN 构建、API 网关、安全防护等功能于一体,帮助您轻松构建、管理和保护现代应用程序。OpenResty Edge 拥有业界领先的性能和可扩展性,能够满足高并发、高负载场景下的苛刻需求。它支持调度 K8s 等容器应用流量,并可管理海量域名,轻松满足大型网站和复杂应用的需求。
如果您喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道 或 B 站频道。谢谢!
关于作者
章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。
章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等,并编写过 60 多个开源软件库。
关注我们
如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:
翻译
我们提供了英文版 原文和中译版(本文) 。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!

























































