今天我想展示如何为发送到上游或后端服务器的请求配置一个不同的 Host 头。在这张图中,客户端发送了一个 Host 头为 test-edge.com 的请求。但是最后到达源站的请求却是另一个 Host 头:blah.com

嵌入图片

设置上游请求的 Host 头之前

像往常一样,让我们进入 OpenResty Edge 的 Admin Web 控制台。这是我们控制台的的一个样例部署。每个用户都可以有自己的本地部署。

这一次我们继续使用 test-edge.com 域名的样本应用。

进入这个应用。

屏幕截图

我们已经在之前的教程中定义了一个上游。

屏幕截图

这个 my backend 上游已经定义了一个后端服务器。

屏幕截图

注意后端服务器的 IP 地址以数字“191”结尾。我们稍后将使用这个 IP 地址。

屏幕截图

我们也已经定义了一个页面规则。

屏幕截图

这个页面规则设置了一个反向代理到我们刚才看到的上游。

屏幕截图

我们将向网关服务器发送一个测试请求,然后检查后端服务器上收到的 Host 请求头。默认情况下,它们一定是相同的。

嵌入图片

我们在终端上使用 curl 命令通过 test-edge.com 向我们的网关服务器发送一个请求。我们假设这个域名已经被解析到我们的网关服务器。

curl -sSI 'http://test-edge.com'

屏幕截图 1

然后我们登录 IP 以 191 结尾的后端服务器。

ssh 54.213.103.191

屏幕截图 2

检查服务器的最后一条访问日志。

tail -1 /usr/local/openresty/nginx/logs/access.log

转发的请求的 Host 头确实是 test-edge.com

屏幕截图 3

设置上游请求的 Host 头

现在我们要配置 OpenResty Edge,使其向后端发送一个不同的 Host 头,比如说,blah.com

嵌入图片

让我们尝试修改上游请求的 Host 头。

屏幕截图

直接编辑现有的代理规则。

屏幕截图

添加一个新的动作,设置代理主机”。

屏幕截图

搜索一下“设置代理主机”。

屏幕截图

屏幕截图

选择它。

屏幕截图

填入主机名,blah.com

屏幕截图

保存我们的修改。

屏幕截图

像往常一样,我们需要发布来推送这个新的页面规则。

屏幕截图

点击这个按钮。

屏幕截图

发布!

屏幕截图

已经完全同步。

屏幕截图

现在,新的页面规则已经被推送到所有的网关集群和服务器。

我们的配置更改不需要重新加载服务器、重启或二进制升级服务器进程,所以它是非常高效和可扩展的。

嵌入图片

这一次,后端服务器上收到的 Host 请求头应该是 blah.com,让我们检查一下!

嵌入图片

测试新的页面规则

我们再次在终端上向我们的网关服务器发送一个请求。

curl -sSI 'http://test-edge.com'

屏幕截图 1

然后再次登录 IP 以 191 结尾的后端服务器。

ssh 54.213.103.191

屏幕截图 2

检查最后一条访问日志。

tail -1 /usr/local/openresty/nginx/logs/access.log

我们看到转发的请求的 Host 头变成了 blah.com,符合预期。

屏幕截图 3

这就是我今天想要介绍的内容。

如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道B 站频道。谢谢!

关于本文和关联视频

本文和相关联的视频都是完全由我们的 OpenResty Showman 产品从一个简单的剧本文件自动生成的。

关于作者

章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。

章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,并编写过 60 多个开源软件库。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文) 。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!