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

如何让Nginx Ingress在路由前剥离主机名的-blue/-green后缀?

可行:通过Nginx Ingress实现-blue后缀主机名的透明重写

完全可以实现需求,无需修改各服务团队的Ingress规则,只需通过Nginx Ingress的全局配置添加主机名重写逻辑即可,具体步骤如下:

1. 全局配置主机名头重写规则

利用Nginx Ingress的server-snippet参数,在全局配置中添加对-blue后缀主机名的处理逻辑,自动修改请求的Host头:

通过Helm Values配置(推荐)

如果是通过Helm安装的Nginx Ingress,修改values.yaml文件,添加以下配置:

controller:
  config:
    server-snippet: |
      if ($host ~* "^(.*)-blue\.acme\.com$") {
          set $new_host $1.acme.com;
          proxy_set_header Host $new_host;
      }

执行Helm升级命令应用配置:

helm upgrade <your-ingress-release-name> ingress-nginx/ingress-nginx -f values.yaml -n <ingress-namespace>

直接修改ConfigMap(如果未用Helm管理配置)

找到Nginx Ingress对应的ConfigMap(通常名为<release-name>-ingress-nginx-controller),添加server-snippet字段:

apiVersion: v1
kind: ConfigMap
metadata:
  name: <release-name>-ingress-nginx-controller
  namespace: <ingress-namespace>
data:
  server-snippet: |
    if ($host ~* "^(.*)-blue\.acme\.com$") {
        set $new_host $1.acme.com;
        proxy_set_header Host $new_host;
    }

修改后执行kubectl apply生效。

2. 验证配置效果

使用curl测试请求,模拟带有-blue后缀的主机名:

curl -v -H "Host: xyz-blue.acme.com" https://<your-ingress-ip>

查看响应是否与访问https://xyz.acme.com一致,确认路由已正确匹配到目标服务。

额外注意事项

  • 确保xyz-blue.acme.com的DNS记录指向与xyz.acme.com相同的Ingress Controller外部IP;
  • AKS 1.25版本与官方Nginx Ingress Helm Chart(>=4.0版本)完全兼容,无需担心版本适配问题;
  • 该规则是全局生效的,所有符合*-blue.acme.com格式的主机名都会被自动处理,无需各服务团队单独配置Ingress规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:22:40