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

Kubernetes nginx ingress上传超1MB文件报413错误如何解决

问题原因

返回413 Request Entity Too Large是ingress-nginx默认请求体大小限制导致的。你使用的0.35.0版本ingress-nginx默认将Nginx核心参数client_max_body_size设为1m,仅允许1MB以内的请求体通过,超出阈值会直接由Nginx层返回413,请求不会转发到后端业务。你贴出的LoadBalancer类型Service配置与该限制无关,无需修改。

配置方案

支持两种配置粒度,可根据业务场景选择:

1. 全局配置(所有Ingress路由统一生效)

适用于所有业务通用上传大小上限的场景,配置修改后对所有走该ingress-nginx-controller的路由生效。
你是Helm部署的版本,可选择以下任意一种方式配置:

  • 直接修改运行时ConfigMap(立即生效,重启不丢失)
    执行编辑命令:
    kubectl edit configmap ingress-nginx-controller -n ingress-nginx
    
    在data字段下添加全局大小配置,示例设置全局上限为100MB:
    data:
      proxy-body-size: "100m"
    
    保存退出后,controller会自动检测配置变更并重载Nginx,通常10秒内生效。
  • 修改Helm Values(避免后续Helm升级覆盖配置)
    如果后续需要通过Helm升级ingress-nginx版本,建议把配置写入Values文件,防止自定义配置被覆盖:
    controller:
      config:
        proxy-body-size: "100m"
    
    写完执行helm upgrade命令更新release即可生效。

2. 单Ingress自定义配置(仅指定业务路由生效)

适用于不同业务需要不同上传上限的场景,该配置优先级高于全局配置,不会影响其他业务路由。
找到你大文件上传接口对应的Ingress资源,在metadata.annotations段添加对应注解即可,示例为该上传接口设置1GB上限:

apiVersion: networking.k8s.io/v1beta1 # 0.35.0版本适配的Ingress API版本
kind: Ingress
metadata:
  name: your-upload-service-ingress
  namespace: your-business-namespace
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "1024m" # 支持单位k/m/g,填"0"代表不限制请求体大小
spec:
  # 原有路由规则保持不变即可

应用该Ingress配置后,对应路由会立即重载生效。

配置校验

配置完成后可通过如下方式验证:

# 生成2MB大小的测试文件
dd if=/dev/zero of=test_2m.bin bs=1M count=2
# 调用上传接口测试
curl -X POST -F "file=@test_2m.bin" http://你的业务域名/上传接口路径

如果不再返回413错误,说明配置已生效。

注意:如果你的后端业务服务本身也配置了请求体大小限制,需要同步调整后端对应参数,否则Ingress层放行后,仍可能被后端拦截报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:18:28