返回顶部
首页 > 资讯 > 服务器 >Nginx如何解决超长请求串
  • 453
分享到

Nginx如何解决超长请求串

nginx服务器http 2023-09-18 08:09:20 453人浏览 安东尼
摘要

针对get请求,我们可以通过修改两个配置来解决请求串超长的问题: client_header_buffer_size 语法:client_header_buffer_size size 默认值:1k

针对get请求,我们可以通过修改两个配置来解决请求串超长的问题:
client_header_buffer_size
语法:client_header_buffer_size size
默认值:1k
使用字段:Http, server
这个指令指定客户端请求的http头部缓冲区大小,绝大多数情况下一个头部请求的大小不会超过1k,不过如果有来自于wap客户端的较大的cookie它可能会超过1k,Nginx将分配给它一个更大的缓冲区,这个值可以在 large_client_header_buffers里面设置。

large_client_header_buffers
语法:large_client_header_buffers number size
默认值:4k/8k
使用字段:http, server
指令指定客户端请求的一些比较大的头文件到缓冲区的最大值,如果一个请求的URI大小超过这个值,服务 器将返回一个"Request URI too large" (414),同样,如果一个请求的头部字段大于这个值,服务器 将返回"Bad request" (400)。

那么有人就会觉得奇怪了,为什么修改http header的大小就能解决get请求串过长的问题呢, 这就要从http协议的get请求说起了,其实GET提交,请求的数据会附在URL之后(就是把数据放置在 HTTP协议头中)。


针对POST请求,我们可以调整如下两个配置项来解决:
client_body_buffer_size
语法:client_body_buffer_size the_size
默认值:8k/16k
使用字段:http, server, location
这个指令可以指定连接请求使用的缓冲区大小。
如果连接请求超过缓存区指定的值,那么这些请求或部分请求将尝试写入一个临时文件。
默认值为两个内存分页大小值,根据平台的不同,它可能是8k或16k

client_max_body_size
语法:client_max_body_size size
默认值:client_max_body_size 1m
使用字段:http, server, location
这个指令指定允许客户端请求的最大的单个文件字节数,它出现在请求头部的Content-Length字段。
如果请求大于指定的值,客户端将收到一个"Request Entity Too Large" (413)错误。
需要记住,浏览器并不知道怎样显示这个错误。

同时针对post请求还需要注意下面这个参数的配置,如果不打开这个选项当请求串大于client_body_buffer_size大小时,需要手动去读取存储在磁盘的请求,这里需要注意的是存入磁盘的请求是一个完整的请求并不是大于client_body_buffer_size的部分
client_body_in_single_buffer
语法:client_body_in_single_buffer
默认值:off
使用字段:http, server, location这个指令(0.7.58版本)指定将一个完整的连接请求放入缓冲区,当使用$request_body时推荐使用这个指令以减少复制操作。
如果无法将一个请求放入单个缓冲区,将会被放入磁盘。


GET请求的请求参数最大长度

在HTTP规范RFC-2616中有这样一段描述:

The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET- based fORMs that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).
Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths.

HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URI长度进行限制,只是说如果server无法处理太长的URI,可以通过返回414状态码。

规范中虽然未对GET请求的长度做出明确的规定,但是在浏览器和应用服务器中对GET请求却做出限制或者相关的可配置:

  • Chrome:对Google浏览器URL的最大长度为8182个字符。
  • IE:对IE浏览器URL的最大长度为2083个字符。若超出这个数字,提交按钮没有任何反应。
  • Firefox:对Firefox浏览器URL的最大长度为65536个字符。
  • Safari: 对Safari浏览器URL的最大长度为80000个字符。
  • Apache能接受url长度限制为8192字符
  • nginx可以通过修改配置来改变url请求串的url长度限制:
    client_header_buffer_size 默认值:1k
    large_client_header_buffers默认值:4 8k

实验结论:

  1. 浏览器的大小一般比Nginx服务器大,
    测试方式:设置同样大小的cookie,通过浏览器直接访问服务器与通过浏览器先访问到Nginx再代理到服务器做对比得出。
const http = require('http');const url = require('url')

来源地址:https://blog.csdn.net/yexudengzhidao/article/details/128069617

--结束END--

本文标题: Nginx如何解决超长请求串

本文链接: https://lsjlt.com/news/411547.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Nginx如何解决超长请求串
    针对get请求,我们可以通过修改两个配置来解决请求串超长的问题: client_header_buffer_size 语法:client_header_buffer_size size 默认值:1k ...
    99+
    2023-09-18
    nginx 服务器 http
  • Nginx请求处理时间过长问题解决
    问题 项目的一个功能由于数据量过于庞大,服务器处理请求时间过长,导致超出Nginx配置的代理请求超时时间,其会报错404!时间在一分钟左右就会跳转Nginx错误页面。这里从Nginx端的配置来说如何解决这类问题! 解决方式 修改Nginx...
    99+
    2023-08-19
    nginx 服务器 运维
  • nginx如何请求限制
    这篇文章主要介绍“nginx如何请求限制”,在日常操作中,相信很多人在nginx如何请求限制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nginx如何请求限制”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-20
  • nginx反向代理请求参数丢失如何解决
    如果在使用nginx作为反向代理时发生了请求参数丢失的情况,可能是由于配置不正确或者代理服务器的限制导致的。以下是一些解决方法: ...
    99+
    2024-02-29
    nginx
  • python-requests请求超时解决方案
            python程序根据url从互联网上批量获取数据时,设置HTTP或Socket超时,来防止爬虫爬取某个页面时间过长,导致程序卡置不前。 1、socket 全局设置。 import socketsocket.setdefaul...
    99+
    2023-08-31
    python 爬虫 requests
  • vue请求时间太长_接口处理请求时间过长,前台响应“服务器超时”的解决办法
    一、增加请求超时时间: 在发送请求时,设置适当的超时时间,以延长前端等待服务器响应的时间。可以使用 Axios 库发送请求并设置 timeout 参数来指定超时时间。 import axios fro...
    99+
    2023-09-15
    vue.js 服务器 前端
  • springboot如何实现异步响应请求(前端请求超时的问题解决)
    目录问题解决方案1.服务端异步处理2.设置响应时间需要避免踩到的坑1.关于dubbo中的设置2.关于tomcat的设置3.关于Nginx的设置总结问题 实际场景中会遇到请求业务处理流...
    99+
    2023-01-30
    springboot 异步响应请求 springboot异步请求处理 springboot异步接口响应
  • Nginx请求压缩如何实现
    本篇内容主要讲解“Nginx请求压缩如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx请求压缩如何实现”吧!一、介绍请求压缩,是将服务器的结果通过 Nginx 将内容进行压缩后,在...
    99+
    2023-07-05
  • 决ajax异步请求返回的是字符串如何解决
    这期内容当中小编将会给大家带来有关决ajax异步请求返回的是字符串如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.返回结果差异js获取后打印res.code无结果。因为返回数据格式不正确。php...
    99+
    2023-06-08
  • c#中post请求超时怎么解决
    在C#中,当遇到POST请求超时的问题时,可以尝试以下几种解决方案:1. 增加请求超时的时间限制:可以通过设置HttpWebRequ...
    99+
    2023-08-20
    c#
  • nginx突然不转发请求怎么解决
    当Nginx突然不转发请求时,可以尝试以下步骤来解决问题:1. 检查Nginx的配置文件是否正确。通过运行以下命令检查配置文件语法是...
    99+
    2023-09-13
    nginx
  • c++中如何求字符串长度
    c++ 中字符串长度可通过以下两种方法获取:1. 使用 strlen() 函数,将 c++ 字符串转换为 c 风格字符串后再求长度。2. 使用 std::string 类的 size()...
    99+
    2024-05-12
    c++ 标准库
  • Mysql导入字段超长如何解决
    如果在导入数据时遇到字段超长的问题,可以尝试以下几种解决方法: 调整目标表字段的长度:可以修改目标表字段的长度,使其能够容纳导入...
    99+
    2024-05-10
    mysql
  • PING请求超时原因及解决办法(新增PING间歇性显示请求超时)
    电脑使用远程或者共享对方数据库的时候,会ping一下对方电脑。ping是系统自带的功能,一般用于检测网络连接是否正常,有时候会出现ping请求超时的情况,造成无法上网。在此我整理的一些有关ping请求超时的原因以及解决方法。 点击win...
    99+
    2023-08-31
    服务器 网络 linux
  • 如何使用AngularJS跨站请求解决jsonp请求问题
    这篇文章将为大家详细讲解有关如何使用AngularJS跨站请求解决jsonp请求问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这是我的请求:我在浏览器模板赋值的时候发...
    99+
    2024-04-02
  • nginx如何设置资源请求目录
    这篇文章主要介绍了nginx如何设置资源请求目录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nginx如何设置资源请求目录文章都会有所收获,下面我们一起来看看吧。方式1:使用rootroot :设置请求的根目...
    99+
    2023-06-30
  • Java如何求得字符串的长度
    方法介绍 在 Java 中,要获取字符串的长度,可以使用 String 类的 length() 方法 其语法格式:字符串名.length(); 返回的值是int类型的长度值。 举例: ...
    99+
    2023-10-21
    java jvm 开发语言
  • 解决Java处理HTTP请求超时的问题
    在发送POST或GET请求时,返回超时异常处理办法: 捕获 SocketTimeoutException | ConnectTimeoutException | Connectio...
    99+
    2024-04-02
  • 解决 nginx 413 Request Entity Too Large(请求实体太大)
    发现问题 最近把前端部署到nginx上,上传大文件时,报413错误,具体如下 我们可以看到请求的body的大小,在Content-Length后显示,Nginx默认的request body为1M,小于我们上传的大小          ...
    99+
    2023-10-10
    nginx 服务器 运维
  • NodeJs超长字符串问题如何处理
    本文小编为大家详细介绍“NodeJs超长字符串问题如何处理”,内容详细,步骤清晰,细节处理妥当,希望这篇“NodeJs超长字符串问题如何处理”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。问题:对于超大的 stri...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作