首页 游戏 软件 资讯 排行榜 专题
首页
业界动态
别再硬改代码了!Envoy Gateway 这个功能让路由无缝对接

别再硬改代码了!Envoy Gateway 这个功能让路由无缝对接

热心网友
72
转载
2026-04-14

实战:重写URL前缀路径

在微服务落地和API网关部署过程中,一个绕不开的经典场景就是路径适配。你肯定遇到过:前端或是客户端发出的请求是一个路径,但后端服务实际监听的却是另一个。比如,客户端发起的是`/api/v1/users`的请求,而后端只有`/users`这个接口在等着。这种前后端路径不匹配,往往需要我们在网关层做一次“翻译”,也就是URL路径重写。

Envoy Gateway作为下一代Kubernetes原生网关,基于强大的Envoy Proxy构建,提供了非常灵活和精准的路由与重写能力。接下来,我们就用一个具体的例子,看看如何配置它的Rewrite URL Prefix Path功能。

先看第一个实战场景,需求很明确:

  • 客户端请求: `https://example.local/api/v1/who`
  • 后端服务实际路径: `/who`
  • 目标: 让API网关自动完成转化,把客户端请求中包含的`/api/v1/who`这个前缀,精准地重写成`/who`,然后转发给后端。

要实现这个效果,核心是配置Envoy Gateway的HTTPRoute资源,并使用URLRewrite过滤器。具体配置示例如下:


cat <<'EOF' | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
 name: simple
spec:
 hostnames:
 - example.local
 parentRefs:
 - group: gateway.networking.k8s.io
   kind: Gateway
   name: simple-gw
 rules:
 - matches:
   - path:
       type: PathPrefix
       value: /api/v1/who # 浏览器访问路径
   filters:
   - type: URLRewrite
     urlRewrite:
       path:
         type: ReplacePrefixMatch
         replacePrefixMatch: /who # 业务收到访问路径
   backendRefs:
   - name: simple
     port: 80
EOF

配置生效后,如何验证服务按预期工作了呢?直接看结果:

实战:重写URL完整路径

刚才的例子是针对路径前缀的替换,但有时候,我们需要更彻底的改写,比如替换掉整个路径。这在统一健康检查或就绪检查接口时特别常见。

来看另一个场景:

  • 客户端请求: `/status/healthz` 和 `/status/readyz`
  • 后端服务实际路径: `/ping`
  • 目标: 无论客户端请求的是`/status/healthz`还是`/status/readyz`,最终都统一被重写为`/ping`再转发至后端。

这里的关键在于,不再只是替换匹配的前缀,而是替换掉整个匹配到的路径。配置上需要使用`ReplaceFullPath`类型。


cat <<'EOF' | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
 name: simple
spec:
 hostnames:
 - example.local
 parentRefs:
 - group: gateway.networking.k8s.io
   kind: Gateway
   name: simple-gw
 rules:
 - matches:
   - path:
       type: PathPrefix
       value: /status # 浏览器访问路径
   filters:
   - type: URLRewrite
     urlRewrite:
       path:
         type: ReplaceFullPath
         replaceFullPath: /ping # 业务收到访问路径
   backendRefs:
   - name: simple
     port: 80
EOF

配置完成后,验证一下重写效果:

实战:重写主机名

除了改写路径,主机名(Host)的重写在多租户SaaS应用中同样不可或缺。这类应用的典型做法是使用不同子域名来区分租户,例如:

  • `tenant1.simple.com`
  • `tenant2.simple.com`

应用服务需要根据请求的Host头来判断当前是哪个租户在访问,但最终所有租户的请求都需要落到`simple.com`这个主域名对应的业务服务上。我们当然不想在后端服务里维护一堆租户子域名,这时在网关层重写Host头就成了解法。

使用Envoy Gateway的URLRewrite过滤器,可以轻松实现这个需求。


cat <<'EOF' | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
 name: simple
spec:
 hostnames:
 - "*.simple.com"
 parentRefs:
 - group: gateway.networking.k8s.io
   kind: Gateway
   name: simple-gw
 rules:
 - matches:
   - path:
       type: PathPrefix
       value: /
   filters:
   - type: URLRewrite
     urlRewrite:
       hostname: www.simple.com
   backendRefs:
   - name: simple
     port: 80
EOF

来看一下验证结果,可以看到Host头已经按预期被改写了:

结语

通过Envoy Gateway的URLRewrite过滤器,我们能够非常从容地实现路径前缀乃至整个主机名的重写。这种能力,本质上是在解耦客户端请求的格式与后端服务接口的设计,让前后端可以各自独立演化。对于构建灵活、可维护的微服务集成架构来说,这无疑是一个简化流程、提升效率的关键特性。

来源:https://www.51cto.com/article/835365.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

比特币巨量流出CEX 24小时超5740枚 市场抄底信号显现
web3.0
比特币巨量流出CEX 24小时超5740枚 市场抄底信号显现

过去24小时全球主要交易所比特币流向分化明显,整体净流出5740 82枚。其中CoinbasePro流出约5457枚,币安、Gemini分别流出1023枚和504枚;而OKX则逆势录得约530枚净流入。

热心网友
05.18
魔兽世界恶魔的气息任务全流程攻略与完成步骤详解
游戏攻略
魔兽世界恶魔的气息任务全流程攻略与完成步骤详解

卡拉赞的“恶魔的气息”任务需向大法师奥图鲁斯领取,随后击败玛克扎尔王子并回提交还。任务奖励包括金币、经验与声望。

热心网友
05.18
魔力宝贝狗洞位置详解与前往路线指南
游戏攻略
魔力宝贝狗洞位置详解与前往路线指南

《魔力宝贝》中“狗洞”即“奇怪的洞窟”,位于亚留特村西南方向黄色传送石处,是12至20级玩家高效练级地点。前往路线为:从法兰城至伊尔村,向北进入哈巴鲁东边洞窟击败“熊男”,穿越后抵达亚留特村,再向西南探索即可找到入口。洞内怪物等级较高,建议携带“风地”属性水晶提升生存能力。

热心网友
05.18
贾跃亭获7000万美元融资 将推进多年造车计划
业界动态
贾跃亭获7000万美元融资 将推进多年造车计划

时隔七年,贾跃亭以CEO身份重掌法拉第未来(FF)帅印,并成功为公司注入了关键的发展动力。近期,FF累计完成了高达7000万美元的机构融资。这笔至关重要的资金,被贾跃亭定位为驱动公司机器人业务实现第一阶段战略目标的“核心粮草”。 随着资金与团队就位,贾跃亭的信心显著增强。他公开立下目标:将用两年时间

热心网友
05.18
原神修复水道任务攻略法沙利亚的狂想曲通关详解
游戏攻略
原神修复水道任务攻略法沙利亚的狂想曲通关详解

任务需修复两条水道。首先跟随指引找到NPC并进入幻境,使用号角对准壁画激活飞鸟幻影,触碰并跟随其路径即可修复第一条水道。第二条水道位于洞xue内,跟随萤火虫找到入口,重复使用号角并借助弹跳水母到达高处,跟随飞鸟完成修复。完成后可获得奖励并推进剧情。

热心网友
05.18