nginx配置访问频率
nginx可以通过limit_conn_zone和limit_req_zone两个组件来限制客户端访问服务端的目录和文件的频率和次数,能够抵挡住部分cc、ddos攻击。
限制访问频率:
- http{
- ...
- #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
- #以$binary_remote_addr 为key,限制平均每秒的请求为20个,
- #1M能存储16000个状态,rete的值必须为整数,
- #如果限制两秒钟一个请求,可以设置成30r/m
- limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
- ...
- server{
- ...
- location {
- ...
- #限制每ip每秒不超过20个请求,漏桶数burst为5
- #brust的意思就是当每秒超过20个请求时,5个以内的请求会被延迟访问,超过5个的直接返回503
- #nodelay,设置该选项,将严格使用平均速率限制请求数,超过请求频率的直接返回503
- limit_req zone=allips burst=5 nodelay;
- ...
- }
- ...
- }
- ...
- }
- #注意配置的作用域
注意:发送请求频率高于(1000ms/20r)ms/r 直接返回503
限制并发连接数:
- http{
- ...
- #定义一个名为all_zone的limit_zone,大小10M内存来存储session,
- #nginx 1.18以后用limit_conn_zone替换了limit_conn
- limit_conn_zone all_zone $binary_remote_addr 10m;
- ...
- server{
- ...
- location {
- ...
- limit_conn all_zone 20; #连接数限制
- #带宽限制,对单个连接限数,限制带宽上限500k
- limit_rate 500k;
- ...
- }
- ...
- }
- ...
- }
配置访问白名单:
nginx需支持geo模块;
- http{
- ...
- geo $limited {
- default 1;
- 127.0.0.1 0;
- 172.31.105.247/32 0;
- include /etc/nginx/whiteip;
- }
- map $limited $limit {
- 1 $binary_remote_addr;
- 0 "";
- }
- limit_req_zone $limit zone=allips:20m rate=100r/m;
- ...
- server{
- ...
- location {
- ...
- limit_req zone=allips burst=100 ;
- ...
- }
- }
- /etc/nginx/whiteip:
- 18.195.104.195/32 0;
- 18.196.102.154/32 0;
- 54.93.227.18/32 0;
如果nginx上层还有ELB(aws)或SLB(aliyun),需在nginx配置中添加:
- set_real_ip_from 172.31.0.0/16;
- real_ip_header X-Forwarded-For;
- real_ip_recursive on;
#配置对于从172.31.0.0/16 这个ip段过来的请求,remote_addr的字段的值从 X-Forwarded-For 中取
nginx配置访问频率的更多相关文章
- Nginx配置访问权限
基于IP配置Nginx的访问权限 Nginx配置通过两种途径支持基本访问权限的控制,其中一种是由HTTP标准模块ngx_http_access_module支持的,通过IP来判断客户端是否拥有对Ngi ...
- nginx配置访问图片路径(windows)
简介 Nginx(("engine x")由俄罗斯的程序设计师Igor Sysoev所开发)是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.PO ...
- nginx配置访问本地静态资源
下面说说如何在windows下使用nginx作为静态资源服务器, 1.修改config目录下,这个配置文件,基本上所有的配置都在这里面做, 2.主要的配置参数如下,一些无关的参数我直接去掉了,注意,里 ...
- nginx配置访问本地资源
参考博客:https://www.cnblogs.com/xy51/p/9973326.html 需要访问路径:http://IP:10013/p1upgrade/picfiles/image73b4 ...
- kibana通过nginx配置访问用户验证
背景: 现在搭建好了efk,其中kibana是可以在网页上访问的可视化工具,搭建好的kibana默认没有访问控制权限,任何人都能访问,这样存在一些安全隐患和隐私问题.这里我把设置的访问验证过程记录一下 ...
- nginx配置访问xx.com跳转www.xx.com
二.在nginx里面配置 rewrite 规则.打开 Nginx.conf 文件找到server配置段:[以下是我的server配置段] 禁止IP地址访问 server{ listen 80 defa ...
- Nginx 配置访问静态资源
做个简单的配置: 以txt/png/mp4结尾的请求都会按照如下规则寻找返回文件 关键词: location.root location ~ \.(mp4|png|txt) { root /usr/l ...
- nginx配置访问https[自签版]
通过openssl生成证书 (1)设置server.key,这里需要设置两遍密码: openssl genrsa -des3 -out server.key 1024 (2)参数设置,首先这里需要输入 ...
- nginx配置访问黑名单-2
在Nginx服务器上屏蔽IP 1.查找要屏蔽的ip awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n nginx.access.log ...
随机推荐
- 与eslint有关的规范
https://cloud.tencent.com/developer/section/1135682 腾讯云的规范还是不错的
- python特定时间发送消息到微信公众号
#!/usr/bin/env python# -*- coding: utf-8 -*-# __author__ = 'James'# 导入模块from wxpy import *import tim ...
- 生成N位数字随机数
//生成N位的随机数 全数字 private string GetRandom(int len) { string k = ""; Random rand = new Random ...
- jqgrid 插件的使用
首先设定table的id和分页 <div id=”gridList”></div> //table名称 <div id=”page”></div> ...
- es6下 vue实例属性template不能使用
esm模式下 不能使用template,需要引入非esm的vue.js,查看vue源码的包的dist目录下 文件标有esm是支持ems,没有标记,就是不支持(这个知识,怎么说了,应该属于webpack ...
- Nginx实现负载均衡的简单案例
七层负载均衡的实现(Nginx): 基于URL等应用层信息的负载均衡,一般使用Nginx来实现 Nginx的proxy是它一个很强大的功能,实现了7层负载均衡 功能强大.性能卓越.运行稳定 配置简单灵 ...
- MFC关于.rc文件 .rc2文件
.rc文件和.rc2文件 c和rc2都是资源文件,包含了应用程序中用到的所有的资源. 两者不同在于:rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改; 而rc2中的资源不能在VC的 ...
- jieba(杰巴)分词的三种模式
jieba(结巴)是一个强大的分词库,完美支持中文分词,做为最好的Python中文分词组件. 安装:pip install jieba 特点 支持三种分词模式: 1.精确模式,试图将句子最精确地切开, ...
- Fiddler抓包【6】_Fiddler Script
1.安装SyntaxView插件 使用Fiddler Script前需要安装SyntaxView插件: 方式1:Inspectors tab--->Get SyntaxView tab---&g ...
- ForkJoinPool
fork():开启一个新线程(或是重用线程池内的空闲线程),将任务交给该线程处理. join():等待该任务的处理线程处理完毕,获得返回值. ForkJoinPool 的每个工作线程都维护着一个工作队 ...