Nginx实战-公网LB限流配置等
前提: Nginx要实现根据ip地址进行限流与不限流的区分需要通过源码包安装GeoIP模块
找到与yum安装版本相同的源码包,通过configure进行安装
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-file-aio --with-ipv6 --with-http_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-debug
通过GeoIP模块对访问IP进行分流
geo $unlimit {
default 1;
172.29.72.110/32 0;
}
map $unlimit $limit_key {
0 "";
1 "11000000101010000000000100000001";
}
limit_req_zone $limit_key zone=public_zone:1m rate=50r/s;
主要思路为将不同ip对应上不同的ulimit值,再通过map函数来给limit_key赋值,限流范围的IP都映射为一个二进制字符串确保使用同一块共享内存空间,再通过public_zone对这块共享内存区域进行限速定义
limit_req zone=public_zone burst=100 nodelay;
limit_req_status 429;
这里是http模块里对于限流的使用与状态码的修改
通过Proxy_cache模块对静态文件进行缓存
proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=hot_cache:512m inactive=3d max_size=5g;
proxy_cache_path:这是用于配置Nginx缓存路径的指令。它指定了缓存文件的存储路径,这里指定为/etc/nginx/cache。levels=1:2表示缓存路径的目录结构,keys_zone=hot_cache:512m指定了一个名为hot_cache的缓存区域,大小为512MB。这个区域会存储缓存的键值对信息。inactive=3d表示缓存文件在3天没有被访问后会被认为是不活跃的,可以被清理。max_size=5g指定了缓存的最大大小为5GB。
Cache定义后的使用,对静态文件的缓存
location *.(js|css|ico) {
proxy_cache hot_cache;
proxy_cache_valid 200 206 304 301 302 1d;
proxy_cache_valid any 30m;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_min_uses 3;
proxy_cache_lock on;
proxy_cache_lock_timeout 3s;
add_header Cache-status $upstream_cache_status;
}

定义非直接访问配置
referer头的判断和service的判断
set $flag 0;
if ($http_referer ~* ".*\.tp-link\.com") {
set $flag 1;
}
if ($arg_service ~* "^https?%3A%2F%2F") {
set $flag 1;
}
if ($flag != 1) {
return 400;
}
Nginx实战-公网LB限流配置等的更多相关文章
- 图解Nginx限流配置
本文以示例的形式,由浅入深讲解Nginx限流相关配置,是对简略的官方文档的积极补充. Nginx限流使用的是leaky bucket算法,如对算法感兴趣,可移步维基百科先行阅读.不过不了解此算法,不影 ...
- 简易RPC框架-客户端限流配置
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 死磕nginx系列--nginx 限流配置
限流算法 令牌桶算法 算法思想是: 令牌以固定速率产生,并缓存到令牌桶中: 令牌桶放满时,多余的令牌被丢弃: 请求要消耗等比例的令牌才能被处理: 令牌不够时,请求被缓存. 漏桶算法 算法思想是: 水( ...
- [转]Nginx限流配置
原文:https://www.cnblogs.com/biglittleant/p/8979915.html 作者:biglittleant 1. 限流算法 1.1 令牌桶算法 算法思想是: 令牌以固 ...
- Nginx限流配置
电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单.信誉分析,进而根据用户ip信誉权重做相应的流量拦截.限制流量.Nginx自身有的请求限制模块ngx_http_li ...
- nginx之 nginx限流配置
limit_req zone=req_zone;严格依照在limti_req_zone中配置的rate来处理请求超过rate处理能力范围的,直接drop表现为对收到的请求无延时limit_req zo ...
- nginx对特定参数限流
接到一个需求, 需要对请求(GET)里面的某个参数 的特定的值, 进行限流; 因为不限流的话, 不知道什么时候这个id的请求飙一下, 服务端就被压死了... 就像这样: /index.html?id ...
- 通过Nginx对CC攻击限流
最近公司部署到阿里金融云的系统遭受CC攻击,网络访问安全控制仅靠阿里云防火墙保障,在接入层及应用层并未做限流. 攻击者拥有大量的IP代理,只要合理控制每个IP的请求速率(以不触发防火墙拦截为限),仍给 ...
- spring cloud网关通过Zuul RateLimit 限流配置
目录 引入依赖 配置信息 RateLimit源码简单分析 RateLimit详细的配置信息解读 在平常项目中为了防止一些没有token访问的API被大量无限的调用,需要对一些服务进行API限流.就好比 ...
- DRF的限流配置
在settings.py中添加配置 REST_FRAMEWORK = { #3.限流(防爬虫) 'DEFAULT_THROTTLE_CLASSES': [ 'rest_framework.thrott ...
随机推荐
- 1. 在Windows10上使用dbca配置oracle19.3.0.0时,报错DBT-50000 无法检查可用内存。
1.如图所示,在安装过程中,我遇到了错误提示,无法检查可用内存,导致安装失败. 在咨询后,认为是内存不足导致的问题,便清理了内存,重新安装.但是依旧出现以上内容,检查自己的内存大小,远远大于其安装所需 ...
- Redis-有序集合-zset
- [转帖]为什么需要在脚本文件的开头加上#!/ bin / bash?
本文翻译自:Why do you need to put #!/bin/bash at the beginning of a script file? I have made Bash scripts ...
- [转帖]10.2 Data Collector与MDW
10.2 Data Collector与MDW Data Collection功能是SQL SERVER 2005版本提供的数据库监控报表的功能,通过定时地对数据库的语句运行情况,服务器各种资源的监控 ...
- [转帖]【性能】大页内存 (HugePages)在通用程序优化中的应用
目录 1. 背景 2. 基于指纹的音乐检索简介 3. 原理 4. 小页的困境 5. 大页内存的配置和使用 6. 大页内存的优化效果 7. 大页内存的使用场景 8. 总结 LD_PRELOAD用法 原文 ...
- [转帖]Linux系统管理-crond、chkconfig、systemd、unit、target
https://cloud.tencent.com/developer/article/1409845 10.23 linux任务计划cron crontab命令被用来提交和管理用户的需要周期性执行的 ...
- [转帖]kafka漏洞升级记录,基于SASL JAAS 配置和 SASL 协议,涉及版本3.4以下
攻击者可以使用基于 SASL JAAS 配置和 SASL 协议的任意 Kafka 客户端,在对 Kafka Connect worker 创建或修改连接器时,通过构造特殊的配置,进行 JNDI 注入. ...
- [转帖]Centos7 nginx访问日志文件割接
一.yum安装nginx 二.各文件路径( /etc/nginx/nginx.conf) 1.访问日志路径:access_log /var/log/nginx/access.log main; 2.p ...
- [转帖]nginx 启动、重启、关闭命令详解
https://www.jianshu.com/p/d70006f18a6d 作者:Gakki nginx 命令详解 输入命令:nginx -h nginx -h -?,-h:查看帮助 -v:显示 ...
- 使用shell进行简单分析增量更新时间的方法
使用shell进行简单分析增量更新时间的方法 思路 产品里面更新增量时耗时较久, 想着能够简单分析下哪些补丁更新时间久 哪些相同前缀的补丁更新的时间累积较久. 本来想通过全shell的方式进行处理 但 ...