别再硬改代码了!Envoy Gateway 这个功能让路由无缝对接
实战:重写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过滤器,我们能够非常从容地实现路径前缀乃至整个主机名的重写。这种能力,本质上是在解耦客户端请求的格式与后端服务接口的设计,让前后端可以各自独立演化。对于构建灵活、可维护的微服务集成架构来说,这无疑是一个简化流程、提升效率的关键特性。
热门专题
热门推荐
过去24小时全球主要交易所比特币流向分化明显,整体净流出5740 82枚。其中CoinbasePro流出约5457枚,币安、Gemini分别流出1023枚和504枚;而OKX则逆势录得约530枚净流入。
《魔力宝贝》中“狗洞”即“奇怪的洞窟”,位于亚留特村西南方向黄色传送石处,是12至20级玩家高效练级地点。前往路线为:从法兰城至伊尔村,向北进入哈巴鲁东边洞窟击败“熊男”,穿越后抵达亚留特村,再向西南探索即可找到入口。洞内怪物等级较高,建议携带“风地”属性水晶提升生存能力。
时隔七年,贾跃亭以CEO身份重掌法拉第未来(FF)帅印,并成功为公司注入了关键的发展动力。近期,FF累计完成了高达7000万美元的机构融资。这笔至关重要的资金,被贾跃亭定位为驱动公司机器人业务实现第一阶段战略目标的“核心粮草”。 随着资金与团队就位,贾跃亭的信心显著增强。他公开立下目标:将用两年时间
任务需修复两条水道。首先跟随指引找到NPC并进入幻境,使用号角对准壁画激活飞鸟幻影,触碰并跟随其路径即可修复第一条水道。第二条水道位于洞xue内,跟随萤火虫找到入口,重复使用号角并借助弹跳水母到达高处,跟随飞鸟完成修复。完成后可获得奖励并推进剧情。





