Nginx限流设置

news2024/9/21 10:45:04

1.反向代理(建议先看正向代理,反向代理则是同样你要与对方服务器建立连接,但是,代理服务器和目标服务器在一个LAN下,所以我们需要与代理服务器先建交,再由他获取与目标服务器的交互,好比一个带刀侍卫守护着目标服务器)

  • 屏蔽目标服务器的真实地址,相对安全性较好;
  • nginx的性能好,便于配置负载均衡和动静分离功能,合理利用服务器资源
  • 统一入口,当做负载均衡时,不管目标服务器怎么扩展部署,调用者只访问代理服务器入口即可。
    2.负载均衡(Nginx起到代理作用,在把别人发来的请求转给我们内部服务器时,当我们内部服务器为一个集群时,分活的事就叫负载均衡)
  • RR(轮询):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    负载均衡的核心代码为
 upstream test {
  server localhost:8080;
  server localhost:8081;
  }
  • 权重(也就是我们来对某一个部署在性能更强的机子上分配更多的活):指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  upstream test {
   server localhost:8080 weight=9;
   server localhost:8081 weight=1;
   }
  • ip_hash:ip_hash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
 upstream test {
    ip_hash;
    server localhost:8080;
    server localhost:8081;
    }
  • fair(第三方需要额外安装nginx-upstream-fair):按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backend { 
 fair; 
 server localhost:8080;
 server localhost:8081;
 } 
  • url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器
    在upstream中加入hash语句,server语句中不能写入weight等其他的参数(第二种权重),hash_method是使用的hash算法
upstream backend { 
hash $request_uri; 
hash_method crc32; 
server localhost:8080;
server localhost:8081;
} 

3.HTTP服务器(包含动静分离):
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。(也就是把一些常用的不变的静态资源放到nginx中,然后动态变化的资源再由我们内部服务器来提供值)

upstream test{ 
 server localhost:8080; 
 server localhost:8081; 
 } 
 server { 
 listen 80; 
 server_name localhost; 
 location / { 
 root e:wwwroot; 
 index index.html; 
 } 
 # 所有静态请求都由nginx处理,存放目录为html 
 location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ { 
 root e:wwwroot; 
 } 
 # 所有动态请求都转发给tomcat处理 
 location ~ .(jsp|do)$ { 
 proxy_pass http://test; 
 } 
 error_page 500 502 503 504 /50x.html; 
 location = /50x.html { 
 root e:wwwroot; 
 } 
 } 

4.正向代理(比如VPN,我们自己的电脑与VPN服务器(代理服务器)同处一个LAN下,但是你可能访问不了一些网站(与目标服务器建立不了链接),所以你与你VPN服务器建立连接,让它与你访问不了的网站交流)
以及根据http状态码配置指定页面、访问权限控制(将访问IP加入到白名单就可以访问,加入到黑名单就不可以访问)​编辑
上图是拒绝指定IP,如果是允许指定IP,可进行如下配置,如下:

location /weatherforecast/ {
      proxy_pass http://testloadbalance;
      # 这个ip是百度输入ip查看到的,也可以通过nginx日志可以看
      allow 223.88.45.26;    
}

注:如果在同一location块中同时配置deny和allow,配置在最前面的会覆盖下面的,如下:

location /weatherforecast/ {
       proxy_pass http://testloadbalance;
       # deny all 放在前面,就所有不能访问,deny all 会覆盖下面配置
       #deny all;
       allow  223.88.45.26;
       # deny all 放在后面,被上面allow进行覆盖
       deny all;    
}

、适配PC或移动端(本质就是判断请求头中User-Agent,只要匹配到移动端,就去找指定移动页面就行啦。),限流等
question2:用Nginx来限流的主要思路是什么?
通过IP限流(为了削峰,即让服务器稳定),主要通过两个方面:1.限制请求速率(限制每个客户端IP地址在规定时间内能够发起的请求次数)2.限制并发连接数(如果只限制请求速率的话,可能会出现同一个IP的用户,频繁调用对应相对耗时的api,也就是利用api的耗时,来在请求速率的限制下,仍然可以影响服务器稳定)
question3:具体的命令的含义是什么?

  1. 限制请求速率运用了nginx哪个模块?
  2. binary命令起到什么作用?
  3. 限制并发连接数运用了nginx哪个模块?
  4. 限制请求速率运用到了什么算法?IP以及对应的统计数据放在哪里?
  5. 为什么存储空间选择10M,大概能存多少IP?

 

1ngx_http_limit_req_module
2压缩的作用
3ngx_http_limit_conn_module
4漏桶算法,放nginx中,zone=xxx:10M也就是声明了对应的空间
5存储空间需要根据应用用户量,大概10M==160000Ip

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

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

相关文章

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之StepperItem组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之StepperItem组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、StepperItem组件 用作Stepper组件的页面子组件。 子组件 无。 接口 St…

Kafka 生产调优

Kafka生产调优 文章目录 Kafka生产调优一、Kafka 硬件配置选择场景说明服务器台数选择磁盘选择内存选择CPU选择 二、Kafka Broker调优Broker 核心参数配置服役新节点/退役旧节点增加副本因子调整分区副本存储 三、Kafka 生产者调优生产者如何提高吞吐量数据可靠性数据去重数据乱…

如何写一个其他人可以使用的GitHub Action

前言 在GitHub中,你肯定会使用GitHub Actions自动部署一个项目到GitHub Page上,在这个过程中总要使用workflows工作流,并在其中使用action,在这个使用的过程中,总会好奇怎么去写一个action呢,所以&#xff…

无人机图像识别技术研究及应用,无人机AI算法技术理论,无人机飞行控制识别算法详解

在现代科技领域中,无人机技术是一个备受瞩目的领域。随着人们对无人机应用的需求在不断增加,无人机技术也在不断发展和改进。在众多的无人机技术中,无人机图像识别技术是其中之一。 无人机图像识别技术是利用计算机视觉技术对无人机拍摄的图像…

Project 2010下载安装教程,保姆级教程,附安装包和工具

前言 Project是一款项目管理软件,不仅可以快速、准确地创建项目计划,而且可以帮助项目经理实现项目进度、成本的控制、分析和预测,使项目工期大大缩短,资源得到有效利用,提高经济效益。软件设计目的在于协助专案经理发…

6、5 门关于 AI 和 ChatGPT 的免费课程,带您从 0-100

5 门关于 AI 和 ChatGPT 的免费课程,带您从 0-100 想在 2024 年免费了解有关 AI 和 ChatGPT 的更多信息吗? 图片由 DALLE 3 提供 活着是多么美好的时光啊。还有什么比现在更适合了解生成式人工智能(尤其是 ChatGPT)等人工智能元素的呢!许多人对这个行业感兴趣,但有些…

一文读懂:MybatisPlus从入门到进阶

快速入门 简介 在项目开发中,Mybatis已经为我们简化了代码编写。 但是我们仍需要编写很多单表CURD语句,MybatisPlus可以进一步简化Mybatis。 MybatisPlus官方文档:https://www.baomidou.com/,感谢苞米豆和黑马程序员。 Mybat…

表单标记(html)

前言 发现input的type属性还是有挺多的,这里把一些常用的总结一下。 HTML 输入类型 (w3school.com.cn)https://www.w3school.com.cn/html/html_form_input_types.asp text-文本 文本输入,如果文字太长,超出的部分就不会显示。 定义供文本输入的单行…

C语言操作符超详细总结

文章目录 1. 操作符的分类2. 二进制和进制转换2.1 2进制转10进制2.1.1 10进制转2进制数字 2.2 2进制转8进制和16进制2.2.1 2进制转8进制2.2.2 2进制转16进制 3. 原码、反码、补码4.移位操作符4.1 左移操作符4.2 右移操作符 5. 位操作符:&、|、^、~6. 逗号表达式…

vue3 之 通用组件统一注册全局

components/index.js // 把components中的所组件都进行全局化注册 // 通过插件的方式 import ImageView from ./ImageView/index.vue import Sku from ./XtxSku/index.vue export const componentPlugin {install (app) {// app.component(组件名字,组件配置对象)…

图解 V8 执行 JS 的过程

本文来分享 V8 引擎执行 JavaScript 的过程 1. JS 代码执行过程 在说V8的执行JavaScript代码的机制之前,我们先来看看编译型和解释型语言的区别。 编译型语言和解释型语言 我们知道,机器是不能直接理解代码的。所以,在执行程序之前&#xf…

Java_栈_队列

文章目录 一、栈(Stack)1.概念2.栈的使用3.栈的模拟实现1、定义接口2、定义栈3、成员4、构造方法5、判断空间是否满 full6、入栈 push7、出栈 pop8、获取栈顶元素 peek9、获取栈中有效元素个数 size10、检测栈是否为空 empty完整代码 4.练习1、有效括号2…

GEE Colab——如何利用Matplotlib在colab中进行图形制作

在colab中绘制图表 笔记本的一个常见用途是使用图表进行数据可视化。Colaboratory 提供多种图表工具作为 Python 导入,让这一工作变得简单。 Matplotlib Matplotlib 是最常用的图表工具包,详情请查看其文档,并通过示例获得灵感。 线性图 线性图是一种常见的图表类型,用…

LabVIEW网络测控系统

LabVIEW网络测控系统 介绍了基于LabVIEW的网络测控系统的开发与应用,通过网络技术实现了远程的数据采集、监控和控制。系统采用LabVIEW软件与网络通信技术相结合,提高了系统的灵活性和扩展性,适用于各种工业和科研领域的远程测控需求。 随着…

哈希表(Hash Table)-----运用实例【通过哈希表来管理雇员信息】(java详解) (✧∇✧)

目录 一.哈希表简介: 实例介绍: 类的创建与说明: 各功能图示: 1.class HashTab{ }; 2. class EmpLinkedList{ }; 3. class Emp{ }; 4.测试: 运行结果: 最后,完整…

springboot微信小程序uniapp学习计划与日程管理系统

基于springboot学习计划与日程管理系统,确定学习计划小程序的目标,明确用户需求,学习计划小程序的主要功能是帮助用户制定学习计划,并跟踪学习进度。页面设计主要包括主页、计划学习页、个人中心页等,然后用户可以利用…

Java汽车销售管理

技术架构: springboot mybatis Mysql5.7 vue2 npm node 有需要该项目的小伙伴可以私信我你的Q。 功能描述: 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能,提供经理和销售两种角色进行管理 效果图&…

CTF--Web安全--SQL注入之‘绕过方法’

一、什么是绕过注入 众所周知,SQL注入是利用源码中的漏洞进行注入的,但是有攻击手段,就会有防御手段。很多题目和网站会在源码中设置反SQL注入的机制。SQL注入中常用的命令,符号,甚至空格,会在反SQL机制中…

预测模型:MATLAB线性回归

1. 线性回归模型的基本原理 线性回归是统计学中用来预测连续变量之间关系的一种方法。它假设变量之间存在线性关系,可以通过一个或多个自变量(预测变量)来预测因变量(响应变量)的值。基本的线性回归模型可以表示为&…

Ps:窗口排列

Ps菜单:窗口/排列 Window/Arrange Photoshop 的“窗口/排列” Arrange子菜单中提供了多种方式来组织和查看打开的文档窗口,这在处理多个文档或比较图像时非常有用。 ◆ ◆ ◆ 常用操作方法与技巧 1、同文档双窗口处理法 将同一个图像显示在两个窗口中&…