上传文件超过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

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Java文件上传的多种实现方式

《Java文件上传的多种实现方式》文章主要介绍了文件上传接收接口的使用方法,包括获取文件信息、创建文件夹、保存文件到本地的两种方法,以及如何使用Postman进行接口调用... 目录Java文件上传的多方式1.文件上传接收文件接口2.接口主要内容部分3.postman接口调用总结Java文件上传的多方式1

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

【经验交流】修复系统事件查看器启动不能时出现的4201错误

方法1,取得『%SystemRoot%\LogFiles』文件夹和『%SystemRoot%\System32\wbem』文件夹的权限(包括这两个文件夹的所有子文件夹的权限),简单点说,就是使你当前的帐户拥有这两个文件夹以及它们的子文件夹的绝对控制权限。这是最简单的方法,不少老外说,这样一弄,倒是解决了问题。不过对我的系统,没用; 方法2,以不带网络的安全模式启动,运行命令行,输入“ne

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行