解决k8s中ingress-nginx出现413 Request Entity Too Large错误

本文档介绍了如何解决由于请求实体过大导致的问题,通过修改ingress-nginx控制器的默认配置,将`proxy-body-size`设置为`30M`,允许更大的上传或POST数据。
请求实体太大导致的问题,修改ingress-nginx的默认client-body的大小配置
nginx.ingress.kubernetes.io/proxy-body-size: "30M"

在这里插入图片描述

### OSS 上传 413 Request Entity Too Large 错误解决方案 当遇到 `413 Request Entity Too Large` 错误时,通常是因为服务器端对请求体大小设置了限制,而客户端尝试上传的文件超出了该限制。以下是针对不同环境下的具体解决方法: #### 一、Nginx 配置调整 如果前端通过 Nginx 转发请求到后端服务,则需要调整 Nginx 的配置来允许更大的文件上传。 在 Nginx 配置文件中找到 `http {}` 或者特定虚拟主机的配置块,在其中添加或修改以下参数: ```nginx client_max_body_size 50m; ``` 此参数定义了客户端可以发送的最大请求主体大小。将其设置为适合业务需求的值即可[^1]。 完成更改之后,需验证配置文件的有效性并重新加载 Nginx: ```bash nginx -t # 测试配置文件语法是否正确 nginx -s reload # 如果测试成功则重载配置 ``` #### 二、Kubernetes Ingress 中的 Nginx 配置 对于部署于 Kubernetes 环境中的应用,可能使用的是基于 Nginxingress 控制器。此时可以通过自定义注解的方式增加支持的大文件上传能力。 编辑对应的 ingress resource 定义如下字段: ```yaml annotations: nginx.ingress.kubernetes.io/proxy-body-size: "100m" ``` 这会告诉入口控制器接受最大达到 100 MB 的单个对象上传请求[^4]。 #### 三、Spring Boot 后端框架配置 假设您的应用程序运行在一个 Spring Boot 构建的服务之上,那么还需要进一步确认后台是否有额外约束存在。可以在 application.yml (或者 .properties) 文件里加入下面这些条目以放宽限制条件: ```yml spring: servlet: multipart: max-file-size: 100MB # 单个文件上限 max-request-size: 200MB # 整个 HTTP 请求数据量上线 server: tomcat: max-http-post-size: 100MB ``` 以上设定分别控制着每份独立附件以及整个 POST 数据包所能容纳的内容长度[^4]。 #### 四、阿里云 OSS SDK 设置 最后一点需要注意的地方在于实际调用 OSS API 进行存储操作的时候也可能受到某些内置阈值的影响。因此建议查阅所使用的编程语言版本文档, 查看是否存在类似的选项可供调节。比如 Python 版本 Boto3 库中有类似功能用于指定分片传输临界尺寸等细节处理方式;Java 客户端同样提供了丰富的构造函数帮助开发者灵活应对各种场景需求。 综上所述,要彻底消除此类问题的发生几率,就需要从前至后的各个环节都做好相应的适配工作——即合理规划好网关层(Nginx/K8S-Ingress),中间件(SpringBoot/Tomcat),直至最终目的地(OSS Server Side Policy)[^1][^2][^3]. ```python import oss2 auth = oss2.Auth('your-access-key-id', 'your-access-key-secret') bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'your-bucket-name') def upload_large_file(file_path): try: result = bucket.put_object_from_file('object-key', file_path) print("HTTP status code:", result.status) except Exception as e: print(e) if __name__ == "__main__": upload_large_file('/path/to/large/file') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值