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

如何在Kubernetes的Nginx Ingress Controller中将URL重写为小写

AKS环境下基于Nginx Ingress Controller实现URL全小写重写方案

单Ingress配置方案(按需生效,推荐)

仅需要对指定业务的Ingress规则生效时,直接在对应的Ingress资源中添加以下注解即可:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your-frontend-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      # 校验URI是否包含大写字母
      if ($uri ~ [A-Z]) {
        # 重定向到全小写URL,保留原域名、请求参数和协议
        rewrite ^(.*)$ ${scheme}://$host$1 lowercase_permanent;
      }
spec:
  # 此处保留你原有Ingress的规则、TLS、后端服务配置不变

配置完成后执行kubectl apply -f <你的ingress配置文件路径>生效,即可实现类似test.com/CHILD自动301重定向到test.com/child的效果。

注:如果你使用AKS官方提供的Nginx Ingress插件,无需额外安装组件,上述注解可直接生效

全局配置方案(全集群Ingress统一生效)

如果需要所有经过Nginx Ingress Controller的请求都强制做小写重写,直接修改Ingress对应的ConfigMap即可:

  • 编辑Nginx Ingress的核心配置ConfigMap,默认安装场景下ConfigMap名为nginx-configuration,位于ingress-nginx命名空间;AKS官方Ingress插件的ConfigMap位于kube-system命名空间,名称为addon-http-application-routing-nginx-configuration
  • 在data字段下添加如下配置:
data:
  http-snippet: |
    server {
      listen 80;
      server_name ~^(.*)$;
      if ($uri ~ [A-Z]) {
        rewrite ^(.*)$ ${scheme}://$host$1 lowercase_permanent;
      }
    }

配置更新后1分钟内自动生效,无需重启Pod。

效果验证

执行测试命令校验重写规则是否生效:

curl -I https://test.com/CHILD

返回结果中如果包含HTTP/2 301且Location字段值为全小写的https://test.com/child,说明配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:39:02