Ingress Nginx 413请求实体过大:修改proxy-body-size无效求助
解决Ingress-Nginx proxy-body-size配置不生效的问题
下面是几个排查和解决的关键步骤,按顺序尝试:
1. 检查Helm values.yaml的配置位置是否正确
很多人会因配置位置错误导致不生效:
- 若要全局生效(所有Ingress都应用该限制),需在values.yaml的
controller.config下设置,而非注解格式:controller: config: proxy-body-size: 800m - 如果你之前是把
nginx.ingress.kubernetes.io/proxy-body-size: 800m加在values的controller.annotations里,这完全无效——这个注解是给Ingress资源对象使用的,不是给Ingress控制器本身配置的。
2. 针对单个Ingress单独配置注解(非全局场景)
如果仅需让特定Ingress支持大文件上传,直接在该Ingress的YAML中添加注解,无需修改Helm values:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: your-ingress-name namespace: your-namespace annotations: nginx.ingress.kubernetes.io/proxy-body-size: 800m spec: rules: # ...你的路由规则
应用配置:kubectl apply -f your-ingress.yaml
3. 确保Helm配置已生效
修改values.yaml后,必须重新升级Helm Release,否则控制器不会加载新配置:
helm upgrade ingress-nginx ingress-nginx/ingress-nginx -f your-values.yaml -n your-namespace
之后检查控制器Pod是否重启:
kubectl get pods -n your-namespace | grep ingress-nginx-controller
若Pod的重启时间为刚操作后,说明配置已加载;若未重启,手动删除Pod让它重建:kubectl delete pod <pod-name> -n your-namespace
4. 验证Nginx实际配置
直接进入控制器Pod,查看nginx.conf是否已生效:
kubectl exec -it <ingress-nginx-controller-pod-name> -n your-namespace -- grep "proxy-body-size" /etc/nginx/nginx.conf
若输出proxy-body-size 800m;,说明配置已正确加载,此时再测试上传;若未找到该配置,回到第一步检查配置位置。
5. 排查上游/负载均衡的限制
若以上步骤都完成仍报错,可能是:
- 后端服务自身有文件大小限制(比如Spring Boot的
multipart.max-file-size,或后端Nginx的client_max_body_size) - 云厂商负载均衡(如AWS ALB、GCP LB)默认有上传大小限制(比如ALB默认1MB),需在对应负载均衡配置中调整允许的最大请求体大小。
内容的提问来源于stack exchange,提问作者Phan Ly Huynh
相关产品推荐
相关产品推荐

