首页 > 系统相关 >[Nginx] API请求体过大时,报:Nginx 413 Request Entity Too Large [转载]

[Nginx] API请求体过大时,报:Nginx 413 Request Entity Too Large [转载]

时间:2023-12-26 19:58:26浏览次数:36  
标签:body 大时 请求 nginx Request Nginx client size

1 问题描述

  • 此问题(通过方法1)已解决,但整体的解决思路,参考自网友,故著名为【转载】文章

  • 昨晚压测时,通过API请求10000个设备的若干信号(5个)状态时,Postman返回Nginx的如下错误

API 整个请求有 1.37MB

413 Request Entity Too Large

2 问题分析

  • 通过字面意思,即可知悉:nginxclient_max_body_size指令的默认值为 1 MiB 导致的。
  • 这一指令可以被设置在httpserverlocation语境。在大多数情况下,该指令在嵌套块优先于祖先块相同的指令。
  • client_max_body_size
  • client_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,在“Content-Length”请求头中指定。
  • 如果请求的正文数据大于client_max_body_size,HTTP协议会报错 413 Request Entity Too Large。
  • 就是说如果请求的正文大于client_max_body_size,一定是失败的。如果需要上传大文件,一定要修改该值。
  • client_body_buffer_size
  • Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。
  • 如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中,在哪个临时文件中呢?
  • client_body_temp 指定的路径中,默认该路径值是/tmp/.所以配置的client_body_temp地址,一定让执行的Nginx的用户组有读写权限。

否则,当传输的数据大于client_body_buffer_size,写进临时文件失败会报错。

  • 设置客户端请求正文的最大允许大小,在“Content-Length”请求标头字段中指定。

如果请求中的大小超过配置的值,则会将413(请求实体太大)错误返回给客户端。
请注意,浏览器无法正确显示此错误。将大小设置为0将禁用检查客户端请求正文大小。

3 解决方法

  • 方法1:如果仅仅是调试目标微服务时,可以尝试避开nginx,直接请求 k8s 的 目标 pod。(仅适用于调试目标微服务)

  • 方法2:压缩请求内容

  • 方法3:调整 nginx 的 参数

  • 打开nginx主配置文件nginx.conf,,找到http {}段,修改或者添加

一般在/usr/local/nginx/conf/nginx.conf这个位置。

vim /usr/local/nginx/conf/nginx.conf

    client_max_body_size 20m;
    client_body_buffer_size 20m;

  • 重启nginx
/usr/local/nginx/sbin/nginx -s reload

X 参考文献

标签:body,大时,请求,nginx,Request,Nginx,client,size
From: https://www.cnblogs.com/johnnyzen/p/17929166.html

相关文章

  • nginx 安装
    #!/bin/bash###############################################################FileName:install_nginx.sh#Version:V1.0#Author:junwang#Organization:#CreatedTime:2021-04-1317:12:54#Description:###############################################......
  • Spring Boot学习随笔- RestFul API(@RestController、@RequestBody、@PathVariable),使用
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第十六章、RestFulAPI什么是RESTREST全称是ResourceRepresentationalStateTransfer,中文意思是表述性状态转移,它首次出现在2000年RoyFielding的博士论文中,RoyFielding是HTTP规范的主要编写者之一。他在论文中表......
  • SSM 框架中 Form表单提交 通过request.getParameter("属性名") 获取的结果为null
    今日换机器引入项目源码之后,项目中表单提交到后台,获取不到参数值前台代码大致如下<formaction="/login"method="post"name="loginForm"id="loginForm"><divstyle="width:382px;height:376px;padding:27px0px;margin:0px84px......
  • Nginx常用配置
    项目配置示例HTTP:userroot;worker_processes1;events{worker_connections1024;}http{includemime.types;default_typeapplication/octet-stream;sendfileon;#tcp_nopushon;#keepalive_timeout0;keepa......
  • nginx部署vue编译项目刷新页面404
    原因:nginx配置错误。因为vue打包输出的是单页网页应用,只有一个index.html入口,其他路径是由前端路由去跳转的,服务器目录下没有对应物理路径,所以就会报404。这样的nginx配置会出现该问题。location/{alias/home/vue/dist/;indexindex.html;}  解......
  • Nginx反向代理MQTT服务端(emqx)
    安装Nginx此处使用Ubuntu22.04LTS系统,通过源码编译安装的方式安装Nginx。你也可以使用Docker或二进制包安装Nginx。环境要求在编译和安装Nginx前,需要确保系统中已经安装了以下依赖项:GNUC和C++编译器PCRE(PerlCompatibleRegularExpressions)库zlib压缩库OpenSSL......
  • 2、安装nginx
    1、检查Linux内核版本uname-a内核版本为3.10.0,Linux安装需要内核版本>=2.62、安装依赖环境安装gcc如果已经安装过可以忽略yuminstallgcc安装g++如果已经安装过可以忽略yuminstallgcc-c++安装PCRE库(perlcompatibleregularexpression)如果已经安......
  • Keepalived 安装 配置 Nginx 高可用
    Keepalived安装配置Nginx高可用Keepalived安装yuminstall-ykeepalived配置文件位置/etc/keepalived/keepalived.conf配置nginx高可用vi/etc/keepalived/keepalived.confvrrp_scriptchk_gluster{script"/usr/bin/systemctlis-activeglusterd"int......
  • Nginx安装部署
    如果没有gcc环境,需要安装gcc:yuminstallgcc-c++安装依赖yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel#进入文件夹cd/usr/local#下载安装包wgethttp://nginx.org/download/nginx-1.18.0.tar.gz#解压安装包tar-xvfnginx-1.18.0.tar.g......
  • Nginx 工作原理简介
    在了解Nginx工作原理之前,我们先来了解下几个基本的概念以及常见的I/O模型。基本概念同步:就是指调用方发起一个调用,在没有得到调用结果之前,该调用不返回。换句话说,也就是调用方发起一个调用后,一直等待被调用方返回结果,直到获取结果后才执行后续操作。生活中的同步场景:等电梯:按电梯......