上传文件超过1Mb,返回413错误

2024-05-06 10:08
文章标签 错误 上传 返回 超过 413 1mb

本文主要是介绍上传文件超过1Mb,返回413错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   近期手头上有一个项目在整体上云,期间遇到一个Cloud storage上传文件超过限制的问题,在此记录一下。

   背景是:IBM Cloud的K8s + PersistentVolumeClaim + Webdav + Ingress(Nginx)

   详细情况是 有许多项目部署在K8s集群上,并且用PersistentVolumeClaim(大小为20G)做为一块虚拟的磁盘,存储项目中需要用到的一些静态文件;并且在集群中的PVC之上通过webdav协议,提供了外部的读写能力(主要是通过Cyberduck等软件进行上传文件的功能);最后使用了Ingress作了地址的映射。

   在实际的使用过程中发现一个问题,通过Cyberduck上传文件时,小于1Mb的文件能上传成功,但是大于1Mb的文件会返回413错误(413 Request Entity Too Large)。

 Cyberduck上传失败截图

   通过调研,排除了PersistentVolumeClaim和webdav对文件大小的限制,最终发现nginx有相关的设置:

   client_max_body_size

   该设置规定了文件大小,默认是1Mb。

   

   最终找到了Ingress的annotations里,ingress.kubernetes.io/proxy-body-size对应的设置就是nginx的 client_max_body_size,于是在ingress.yaml中加上了如下配置:

  annotations:ingress.bluemix.net/client-max-body-size: 64m

   由于我们的环境装的IBM Cloud,查阅annotation的具体配置方法可以参考https://console.bluemix.net/docs/containers/cs_annotations.html#ingress_annotation

   对其他版本的Ingress,需要配置

annotations:ingress.kubernetes.io/proxy-body-size: "50m"

   或者

annotations:nginx.ingress.kubernetes.io/proxy-body-size: "50m"

   

   It works!

   

   写在最后:

   1. 改完yaml文件配置别忘了重新apply。

   2. 与client_max_body_size类似的nginx设置还有client_header_timeout, client_body_timeout, proxy_connect_timeout等,感兴趣的小伙伴可以自行研究。

这篇关于上传文件超过1Mb,返回413错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964086

相关文章

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解

CentOS 7 YUM源配置错误的解决方法

《CentOS7YUM源配置错误的解决方法》在使用虚拟机安装CentOS7系统时,我们可能会遇到YUM源配置错误的问题,导致无法正常下载软件包,为了解决这个问题,我们可以替换YUM源... 目录一、备份原有的 YUM 源配置文件二、选择并配置新的 YUM 源三、清理旧的缓存并重建新的缓存四、验证 YUM 源

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

GitLab文件的上传与下载方式

《GitLab文件的上传与下载方式》:本文主要介绍GitLab文件的上传与下载方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录GitLab 项目拉取到本地GitLab 项目上传方法方法 1:本地项目未初始化Git方法 2:本地项目已初始化GitGitLab 上