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

Azure Kubernetes中Nginx Ingress 413请求实体过大问题排查

问题

在Kubernetes集群中运行的应用,同一集群的platform命名空间部署了Nginx Ingress Controller。应用的Ingress资源配置了注解nginx.ingress.kubernetes.io/proxy-body-size: "0",但上传超过100MB的文件时(99MB正常,101MB触发413错误),出现413 请求实体过大的报错。

此前应用在独立服务器运行时无此问题,推测是Kubernetes集群的Nginx Ingress在强制执行请求体大小限制。已尝试通过Helm升级命令设置相关参数,也修改了对应的ConfigMap配置,但均未解决问题。

已执行的Helm升级命令

helm upgrade --install nginx-ingress ingress-nginx/ingress-nginx -n platform --version 4.3.0 --namespace platform --set controller.replicaCount=2 --set controller.nodeSelector."kubernetes\.io/os"=linux --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux --set-string controller.config.proxy-body-size=150m --set-string controller.config.client-max-body-size=150m --set controller.service.loadBalancerIP=" 00.00.000.000" --set controller.service.externalTrafficPolicy=Local --force

修改后的ConfigMap配置

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-ingress-ingress-nginx-controller
  namespace: platform
  uid: 56d779d6-19c2-48fc-95de-fbd2149b3bf6
  resourceVersion: '116031130'
  creationTimestamp: '2023-04-27T09:45:38Z'
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: nginx-ingress
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
    app.kubernetes.io/version: 1.4.0
    helm.sh/chart: ingress-nginx-4.3.0
  annotations:
    meta.helm.sh/release-name: nginx-ingress
    meta.helm.sh/release-namespace: platform
  managedFields:
    - manager: Mozilla
      operation: Update
      apiVersion: v1
      time: '2023-04-27T09:45:38Z'
      fieldsType: FieldsV1
      fieldsV1:
        f:data:
          .: {}
          f:allow-snippet-annotations: {}
        f:metadata:
          f:annotations:
            .: {}
            f:meta.helm.sh/release-name: {}
            f:meta.helm.sh/release-namespace: {}
          f:labels:
            .: {}
            f:app.kubernetes.io/component: {}
            f:app.kubernetes.io/instance: {}
            f:app.kubernetes.io/managed-by: {}
            f:app.kubernetes.io/name: {}
            f:app.kubernetes.io/part-of: {}
            f:app.kubernetes.io/version: {}
            f:helm.sh/chart: {}
    - manager: helm
      operation: Update
      apiVersion: v1
      time: '2023-05-03T13:09:41Z'
      fieldsType: FieldsV1
      fieldsV1:
        f:data:
          f:client-max-body-size: {}
          f:proxy-body-size: {}
data:
  allow-snippet-annotations: 'true'
  client-max-body-size: 150m
  proxy-body-size: 150m
排查与解决思路
  • 确认Ingress Controller Pod重载配置:修改ConfigMap或执行Helm升级后,需确认Ingress Controller Pod已重启加载新配置。可手动重启Pod:

    kubectl rollout restart deployment nginx-ingress-ingress-nginx-controller -n platform
    

    重启后进入Pod验证Nginx配置:

    kubectl exec -it <nginx-controller-pod-name> -n platform -- cat /etc/nginx/nginx.conf | grep client_max_body_size
    

    若输出不是150m,说明配置未正确加载。

  • 检查Ingress资源注解有效性:确认应用Ingress的nginx.ingress.kubernetes.io/proxy-body-size: "0"注解无拼写错误,且被Ingress Controller识别。查看Ingress描述信息:

    kubectl describe ingress <your-ingress-name> -n <app-namespace>
    

    部分场景下全局配置可能覆盖注解,需确保注解优先级生效。

  • 排查中间负载均衡的限制:若集群前端存在云厂商LB或其他代理组件,这些服务通常默认有100MB的上传限制,需在对应组件中调整请求体大小阈值。

  • 修正全局配置的键名冲突:Ingress-Nginx 1.4.0版本中,全局配置的正确键名是client-max-body-size,proxy-body-size仅用于Ingress注解。建议修改Helm命令,去掉controller.config.proxy-body-size=150m的设置,重新升级:

    helm upgrade --install nginx-ingress ingress-nginx/ingress-nginx -n platform --version 4.3.0 --namespace platform --set controller.replicaCount=2 --set controller.nodeSelector."kubernetes\.io/os"=linux --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux --set-string controller.config.client-max-body-size=150m --set controller.service.loadBalancerIP="00.00.000.000" --set controller.service.externalTrafficPolicy=Local --force
    
  • 验证应用自身的上传限制:确认应用框架的上传配置未被修改,比如Spring Boot的spring.servlet.multipart.max-file-size、Node.js的body-parser等,确保应用侧未限制文件大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:17:38