OKE集群中ingress-nginx报413错误:请求实体过大求助
解决Ingress-Nginx 413 Request Entity Too Large问题的额外配置方案
以下是针对你遇到的问题的排查和配置建议:
检查单个Ingress资源的注解配置
全局的proxy-body-size配置可能被特定Ingress资源的注解覆盖,需要在目标Ingress资源中显式添加注解:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: 你的Ingress资源名称 annotations: nginx.ingress.kubernetes.io/proxy-body-size: "100M" spec: ingressClassName: nginx # 确保与Ingress Controller的ingressClass一致 # 其他Ingress规则配置验证Helm配置是否生效
- 执行
helm get values <你的Ingress-Nginx发布名称> -n <命名空间>,确认controller.config.proxy-body-size已正确设置为"100M" - 进入Ingress Controller Pod检查Nginx配置:
kubectl exec -it <Ingress-Controller-Pod名称> -n <命名空间> -- cat /etc/nginx/nginx.conf,搜索client_max_body_size字段,确认值为100M。如果未生效,重新部署Helm发布:helm upgrade <发布名称> ingress-nginx/ingress-nginx -f custom-values.yaml -n <命名空间>
- 执行
排查额外代理层的限制
如果OKE集群前端存在OCI负载均衡器或其他第三方Nginx/OpenResty代理,这些组件也可能设置了请求体大小限制,需要对应调整它们的client_max_body_size参数(或对应平台的请求大小限制配置)确认IngressClass匹配
确保你的Ingress资源的spec.ingressClassName与Helm部署的Ingress Controller的controller.ingressClass.name一致。比如Helm配置中设置controller.ingressClass.name: nginx,则Ingress资源必须指定该ingressClassName,否则Controller不会应用全局配置检查Pod重启状态
修改Helm配置后,执行kubectl rollout status deployment/<Ingress-Controller-Deployment名称> -n <命名空间>,确认Pod已完成重启并处于就绪状态,确保配置已加载
内容的提问来源于stack exchange,提问作者Rohit Bagade
相关产品推荐
相关产品推荐

