nginx可以通过limit_conn_zone和limit_req_zone两个组件来限制客户端访问服务端的目录和文件的频率和次数,能够抵挡住部分cc、ddos攻击。

限制访问频率:

  1. http{
  2. ...
  3.  
  4. #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
  5. #以$binary_remote_addr 为key,限制平均每秒的请求为20个,
  6. #1M能存储16000个状态,rete的值必须为整数,
  7. #如果限制两秒钟一个请求,可以设置成30r/m
  8.  
  9. limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
  10. ...
  11. server{
  12. ...
  13. location {
  14. ...
  15.  
  16. #限制每ip每秒不超过20个请求,漏桶数burst为5
  17. #brust的意思就是当每秒超过20个请求时,5个以内的请求会被延迟访问,超过5个的直接返回503
  18. #nodelay,设置该选项,将严格使用平均速率限制请求数,超过请求频率的直接返回503
  19. limit_req zone=allips burst=5 nodelay;
  20. ...
  21. }
  22. ...
  23. }
  24. ...
  25. }
  26.  
  27. #注意配置的作用域

注意:发送请求频率高于(1000ms/20r)ms/r 直接返回503

限制并发连接数:

  1. http{
  2. ...
  3.  
  4. #定义一个名为all_zone的limit_zone,大小10M内存来存储session,
  5. #nginx 1.18以后用limit_conn_zone替换了limit_conn
  6. limit_conn_zone   all_zone  $binary_remote_addr  10m;  
  7. ...
  8. server{
  9. ...
  10. location {
  11. ...
  12. limit_conn all_zone 20;          #连接数限制
  13.  
  14. #带宽限制,对单个连接限数,限制带宽上限500k
  15. limit_rate 500k;           
  16.  
  17. ...
  18. }
  19. ...
  20. }
  21. ...
  22. }

配置访问白名单:

nginx需支持geo模块;

  1. http{
  1. ...
  1. geo $limited {
  2. default 1;
  3. 127.0.0.1 0;
  4. 172.31.105.247/32 0;
  5. include /etc/nginx/whiteip;
  6. }
  7. map $limited $limit {
  8. 1 $binary_remote_addr;
  9. 0 "";
  10. }
  11. limit_req_zone $limit zone=allips:20m rate=100r/m;
  12. ...
  1. server{
  2. ...
  3. location {
  4. ...
  5. limit_req zone=allips burst=100 ;                  
  6. ...
  7. }
  1.  
  1. }
  1. /etc/nginx/whiteip:
  1. 18.195.104.195/32 0;
  2. 18.196.102.154/32 0;
  3. 54.93.227.18/32 0;

如果nginx上层还有ELB(aws)或SLB(aliyun),需在nginx配置中添加:

  1. set_real_ip_from 172.31.0.0/16;
  2. real_ip_header X-Forwarded-For;
  3. real_ip_recursive on;
    #配置对于从172.31.0.0/16 这个ip段过来的请求,remote_addr的字段的值从 X-Forwarded-For 中取

nginx配置访问频率的更多相关文章

  1. Nginx配置访问权限

    基于IP配置Nginx的访问权限 Nginx配置通过两种途径支持基本访问权限的控制,其中一种是由HTTP标准模块ngx_http_access_module支持的,通过IP来判断客户端是否拥有对Ngi ...

  2. nginx配置访问图片路径(windows)

    简介 Nginx(("engine x")由俄罗斯的程序设计师Igor Sysoev所开发)是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.PO ...

  3. nginx配置访问本地静态资源

    下面说说如何在windows下使用nginx作为静态资源服务器, 1.修改config目录下,这个配置文件,基本上所有的配置都在这里面做, 2.主要的配置参数如下,一些无关的参数我直接去掉了,注意,里 ...

  4. nginx配置访问本地资源

    参考博客:https://www.cnblogs.com/xy51/p/9973326.html 需要访问路径:http://IP:10013/p1upgrade/picfiles/image73b4 ...

  5. kibana通过nginx配置访问用户验证

    背景: 现在搭建好了efk,其中kibana是可以在网页上访问的可视化工具,搭建好的kibana默认没有访问控制权限,任何人都能访问,这样存在一些安全隐患和隐私问题.这里我把设置的访问验证过程记录一下 ...

  6. nginx配置访问xx.com跳转www.xx.com

    二.在nginx里面配置 rewrite 规则.打开 Nginx.conf 文件找到server配置段:[以下是我的server配置段] 禁止IP地址访问 server{ listen 80 defa ...

  7. Nginx 配置访问静态资源

    做个简单的配置: 以txt/png/mp4结尾的请求都会按照如下规则寻找返回文件 关键词: location.root location ~ \.(mp4|png|txt) { root /usr/l ...

  8. nginx配置访问https[自签版]

    通过openssl生成证书 (1)设置server.key,这里需要设置两遍密码: openssl genrsa -des3 -out server.key 1024 (2)参数设置,首先这里需要输入 ...

  9. nginx配置访问黑名单-2

    在Nginx服务器上屏蔽IP 1.查找要屏蔽的ip awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n nginx.access.log ...

随机推荐

  1. 与eslint有关的规范

    https://cloud.tencent.com/developer/section/1135682 腾讯云的规范还是不错的

  2. python特定时间发送消息到微信公众号

    #!/usr/bin/env python# -*- coding: utf-8 -*-# __author__ = 'James'# 导入模块from wxpy import *import tim ...

  3. 生成N位数字随机数

    //生成N位的随机数 全数字 private string GetRandom(int len) { string k = ""; Random rand = new Random ...

  4. jqgrid 插件的使用

    首先设定table的id和分页 <div id=”gridList”></div>   //table名称 <div id=”page”></div>  ...

  5. es6下 vue实例属性template不能使用

    esm模式下 不能使用template,需要引入非esm的vue.js,查看vue源码的包的dist目录下 文件标有esm是支持ems,没有标记,就是不支持(这个知识,怎么说了,应该属于webpack ...

  6. Nginx实现负载均衡的简单案例

    七层负载均衡的实现(Nginx): 基于URL等应用层信息的负载均衡,一般使用Nginx来实现 Nginx的proxy是它一个很强大的功能,实现了7层负载均衡 功能强大.性能卓越.运行稳定 配置简单灵 ...

  7. MFC关于.rc文件 .rc2文件

    .rc文件和.rc2文件 c和rc2都是资源文件,包含了应用程序中用到的所有的资源. 两者不同在于:rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改; 而rc2中的资源不能在VC的 ...

  8. jieba(杰巴)分词的三种模式

    jieba(结巴)是一个强大的分词库,完美支持中文分词,做为最好的Python中文分词组件. 安装:pip install jieba 特点 支持三种分词模式: 1.精确模式,试图将句子最精确地切开, ...

  9. Fiddler抓包【6】_Fiddler Script

    1.安装SyntaxView插件 使用Fiddler Script前需要安装SyntaxView插件: 方式1:Inspectors tab--->Get SyntaxView tab---&g ...

  10. ForkJoinPool

    fork():开启一个新线程(或是重用线程池内的空闲线程),将任务交给该线程处理. join():等待该任务的处理线程处理完毕,获得返回值. ForkJoinPool 的每个工作线程都维护着一个工作队 ...