Nginx - 缓慢的 HTTP 拒绝服务攻击

参考链接

https://zhuanlan.zhihu.com/p/677536047

【网络安全】HTTP Slowloris攻击原理解析-CSDN博客

缓慢的http拒绝服务攻击 - 二月无雨 - 博客园

Nginx解决Http慢攻击(Slow HTTP Attack)_nginx 慢拒绝服务攻击-CSDN博客

解决方案

在 nginx.conf 中 http 块里面配置,添加或者调整 client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout 的值

各参数说明

client_max_body_size

说明:此配置指令用于设置客户端(如浏览器、API客户端等)向服务器发送请求时,请求体(通常是POST、PUT等方法携带的数据)的最大允许大小。单位可以是字节(B)、千字节(KB)、兆字节(MB)等。如果客户端发送的请求体大小超过此限制,Nginx将拒绝接收并返回错误响应,通常是HTTP状态码413(Payload Too Large)。此设置有助于防止因客户端上传过大文件或发送过多数据导致服务器资源耗尽。

# 例如,请求的请求体最大只能是 200M
client_max_body_size 200M;

client_body_buffer_size

说明:该指令定义了Nginx在处理请求时,用于临时存储客户端请求体数据的缓冲区大小。当客户端发送的请求体数据小于或等于指定大小时,Nginx可以一次性在内存中接收并处理。如果请求体数据大于缓冲区大小,Nginx会先使用缓冲区存储一部分数据,然后将剩余数据写入磁盘上的临时文件(除非配置了client_body_in_file_only,此时始终写入磁盘)。设置合适的缓冲区大小有助于平衡服务器内存使用和处理效率。如果经常处理大文件上传,可以考虑适当增大此值以减少磁盘I/O;反之,如果内存资源有限或主要处理小文件,可适当减小以节省内存。

# 例如:
# 如果请求体数据小于等于 10M 的话,就会在内存中接收并处理,
# 如果大于 10M,那么就会再内存中保留10M 的数据,剩下的保存到磁盘上的临时文件
client_body_buffer_size 10M;

client_header_buffer_size

说明:这个配置项决定了Nginx用于接收和暂存客户端请求头信息的缓冲区大小。如果请求头的总大小超过了这个值,Nginx会将请求头信息分散到多个缓冲区中在大多数情况下,标准的请求头不会很大,因此默认值(默认 1 KB)通常足够使用。然而,如果客户端发送的请求头特别庞大(例如包含大量Cookie或自定义头信息),可能需要增加此值以防止因请求头过大而导致的错误或性能下降。

# 例如
client_header_buffer_size 1M;

large_client_header_buffers

说明:该指令用来设置一组专门用于存储大请求头的缓冲区。不同于 client_header_buffer_size,它允许您指定一个缓冲区的数量(<number>)以及每个缓冲区的大小(<size>当单个请求头或所有请求头的总大小超过了client_header_buffer_size时,Nginx会使用这些大型缓冲区来存储请求头。设置合理的数量和大小有助于应对包含大量或大尺寸头信息的请求,避免因请求头过大而导致的错误

# 例如
large_client_header_buffers 2 1k;

client_body_timeout

说明:此配置项指定了Nginx等待客户端完成请求体(数据)发送的最长时间如果在指定时间内客户端没有发送完全部请求体,Nginx将视为客户端超时,关闭连接并返回错误。设置合适的超时时间可以防止恶意或故障客户端长时间占用连接资源,同时也确保服务器能及时响应正常的请求。

# 例如
client_body_timeout 10s;

client_header_timeout

说明:这个配置指令设定了Nginx等待客户端发送完整请求头信息的超时时间如果客户端在指定时间内没有完成所有请求头的发送,Nginx将视其为超时,断开连接并返回错误。合理设置此超时时间有助于防止客户端缓慢发送请求头或恶意保持连接不发送数据导致服务器资源浪费。

# 例如
client_header_timeout 5s;

步骤

1)找到 nginx 配置文件位置

此处为语雀内容卡片,点击链接查看:nginx · 语雀

 2)修改配置文件

下面的配置文件只是提供一个参考,按照实际情况来

...
http {...keepalive_timeout  65;client_max_body_size 2m;client_body_buffer_size 2m;client_header_buffer_size 2k;large_client_header_buffers 2 1k;client_body_timeout 10s;client_header_timeout 5s;...
}
...

 3)重新加载配置文件【无需重启 nginx】

./nginx -s reload

语雀文档链接:https://www.yuque.com/heyyall/nzzqzk/qx390rqrptepkhzo?singleDoc# 《Nginx - 缓慢的 HTTP 拒绝服务攻击》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT界面开发--我的第一个windows窗体【菜单栏、工具栏、状态栏、铆接部件、文本编辑器、按钮、主界面】

经过前面的铺垫&#xff0c;今天我们就开始我们图形化界面之旅了&#xff0c;我们的第一个窗体主要包括&#xff1a;菜单栏、状态栏、工具栏、铆接部件、还有Qt提供的一些主窗体的API。 第一部分&#xff1a;主界面(QMainWindow) 当创建好项目后&#xff0c;我们直接运行&…

网络安全领域推荐职位

网络安全领域提供了多种多样的职位&#xff0c;每个职位都有其独特的职责和技能要求。以下是几个具体的推荐职位&#xff0c;适合网络安全工程师以及希望在物联网安全方面有所发展的专业人士&#xff1a; 1. 网络安全分析师&#xff08;Security Analyst&#xff09; 职责&am…

Unity中的动画状态机(详解)

动画状态机的定义 Unity中的动画状态机&#xff08;Animator Controller&#xff09;是用于定义和管理角色或对象动画状态之间转换的工具。它允许动画师和开发者设计复杂的动画逻辑&#xff1b; 例如角色的行走、跑步、跳跃、攻击等动作&#xff0c;以及其他动作之间的平滑过渡…

Vue笔记-element ui中关于table的前端分页

对于 Element UI 表格的前端分页&#xff0c;可以在组件中使用 JavaScript 来实现数据的分页显示&#xff0c;而不必从后端获取已分页的数据。以下是一个简单的示例&#xff0c;演示如何在前端进行 Element UI 表格的分页&#xff1a; <template><div><el-tabl…

ShellCode 格式化代码注入工具

一款基于C/C开发的应用层汇编代码注入工具&#xff0c;可实现向特定进程内注入动态链接库模块或注入ShellCode汇编指令集&#xff0c;还可以实现第三方进程的汇编级Call调用&#xff0c;通常被用于协助渗透人员完成内存注入&#xff0c;同时也可用于对特定ShellCode汇编代码进行…

Ubuntu系统安装软件

在Linux系统中有四种软件安装方式&#xff1a;rpm、yum、apt、编译安装 编译安装 编译安装只有一个源码包&#xff0c;源码包是由一大堆源代码程序组成的&#xff0c;是由程序员按照特定格式和语法编写好了&#xff0c;现成的安装包 程序&#xff1a;未执行的代码 进程&#…

关于前端div里面内嵌滚动条的使用

怀旧网个人博客网站&#xff1a;怀旧网&#xff0c;博客详情&#xff1a;关于前端div里面内嵌滚动条的使用 使用方法 需要完成这个效果&#xff0c;只需要在div里面加上一个属性就可以。设置css属性&#xff1a;overflow: auto; 就可以实现-代码如下&#xff1a; <div id…

`a = a + b` 与 `a += b` 的区别

在 Java 中&#xff0c;a a b 和 a b 都用于将 b 的值加到 a 上&#xff0c;但它们之间存在一些重要的区别&#xff0c;尤其是在类型转换和操作行为方面。 使用 操作符时&#xff0c;Java 会自动进行隐式类型转换&#xff0c;而使用 则不会。这意味着在 a b 的情况下&am…

雷池社区版compose配置文件解析-mgt

在现代网络安全中&#xff0c;选择合适的 Web 应用防火墙至关重要。雷池&#xff08;SafeLine&#xff09;社区版免费切好用。为网站提供全面的保护&#xff0c;帮助网站抵御各种网络攻击。 compose.yml 文件是 Docker Compose 的核心文件&#xff0c;用于定义和管理多个 Dock…

自动驾驶-传感器简述

自动驾驶车辆上的传感器类型包含激光雷达、毫米波雷达、相机、imu、rtk、超声波雷达等&#xff0c;这些传感器用来接收外部世界多姿多彩的信号&#xff0c;根据接收到的信号&#xff0c;车载大脑对信号进行处理&#xff0c;那信号的准确程度就尤为重要。 本文将各个传感器的特性…

MNIST 数据集的CSV的格式的使用(SNN)

1&#xff1a; 利用spikingjelly 实现MNIST 数据集分类 设置仿真时间T10 import time import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import DataLoader, TensorDataset from spikingjelly.activation_based import neuron, en…

java常用数据结构及其接口

Java 提供了丰富的集合框架及其数据结构&#xff0c;每个结构和接口都有独特的功能。以下是一些常用的数据结构和接口&#xff0c;以及它们的关键方法&#xff1a; ### 接口及其实现 1. **List 接口** - 实现类&#xff1a;ArrayList、LinkedList、Vector - 关键方法&a…

git合并相关操作详解

在使用Git进行分支管理时,合并(merge)操作是非常常见的。下面是Git合并相关的详细步骤和一些常见的场景及注意事项。 一、 基本合并操作 假设我们有两个分支:main 和 feature,希望将 feature 合并到 main 上。 切换到目标分支 首先需要切换到你想合并到的分支。例如,切…

Lucas带你手撕机器学习——岭回归

岭回归&#xff08;Ridge Regression&#xff09; 一、背景与引入 在进行线性回归分析时&#xff0c;我们常常面临多重共线性的问题。多重共线性指的是自变量之间高度相关&#xff0c;这会导致回归系数的不稳定性&#xff0c;使得模型的预测能力降低。传统的线性回归通过最小…

模块化主动隔振系统市场规模:2023年全球市场规模大约为220.54百万美元

模块化主动隔振系统是一种用于精密设备和实验装置的隔振解决方案&#xff0c;通过主动控制技术消除振动干扰&#xff0c;提供稳定的环境。目前&#xff0c;随着微纳制造和精密测量技术的发展&#xff0c;对隔振系统的要求越来越高。模块化设计使得系统能够灵活适应不同负载和工…

STM32 第3章 如何用串口下载程序

时间:2024.10.28 一、学习内容 1、安装USB转串口驱动 1.1串口下载连接示意图 1、USB转串口模块在开发板上是一个独立的模块,可通过调帽与其他串口连接,USART1/2/3/4/5 2、只有USART1才具有串口下载的功能。 3、CH340是电平转换芯片,将电脑端输出的USB电平和单片机输…

移除字符串中空格_Java实现

package com.leetcode;/*** 移除字符串中空格*/ public class RemoveSpaceFromStr {public static String removeWhiteSpaceFromStr(String input){StringBuilder outputnew StringBuilder();char[] charsinput.toCharArray();for (char c : chars) {if(!Character.isWhitespac…

1.3 面向对象 C++面试问题

1.3.1 简述一下什么是面向对象,面向对象与面向过程的区别 什么是面向对象 面向对象&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它通过将现实世界中的实体抽象为“对象”来组织代码。面向对象编程关注对象及其交互&#x…

国产游戏的崛起与挑战:技术创新如何驱动未来发展

近年来&#xff0c;中国的游戏行业如星火燎原&#xff0c;国产游戏不仅在国内市场站稳了脚跟&#xff0c;更在国际市场上逐渐展露锋芒。从《原神》到《永劫无间》&#xff0c;这些作品以其精美的画面、复杂的物理引擎和智能化的AI技术赢得了广泛的赞誉。尽管如此&#xff0c;面…

STM32的hal库中,后缀带ex和不带的有什么区别

在STM32的HAL&#xff08;硬件抽象层&#xff09;库中&#xff0c;后缀带“ex”和不带“ex”的文件及其包含的内容存在显著的区别。这些区别主要体现在功能扩展性、使用场景以及API的层次上。 一、功能扩展性 不带“ex”后缀的文件&#xff1a; 这些文件通常包含标准的、核心…