nginx map模块使用和配置
主机 | IP | 备注 |
---|---|---|
master1 | 10.0.0.63 | |
master2 | 10.0.0.64 |
1. NGINX MAP模块与NGINX GEO模块
在通常情况下,使用
nginx
基于 ip 限制访问请求频率等限制内容,我们会需要对特定ip进行限制排除操作,因此本文引入了基于nginx geo 与 nginx map 进行此类情景相关配置
这两个模块默认已经安装.
Nginx geo 格式说明
Syntax ( 语法格式 ): geo [$address] $variable { ... }
Default ( 默认 ): -
Content ( 配置段位 ): http
Nginx map 格式说明
Syntax ( 语法格式 ): map String $variable { ... }
Default ( 默认 ):-
Content ( 配置段位 ): http
2. NGINX MAP配置实例
10.0.0.63 配置nginx map
#----------------------------------------------------------------------------#
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format main '$remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$request_time" "$remote_addr" "$binary_remote_addr"';
geo $whiteiplist {
default $binary_remote_addr; # 设置默认值
127.0.0.1 0; # 0 是不受限制的网段
10.0.0.0/24 1; # 1 是受限制的网段
}
map $whiteiplist $limit {
1 $binary_remote_addr;
0 "";
}
limit_req_zone $limit zone=leilei:1m rate=5r/m;
limit_req_log_level warn;
server {
listen 80;
server_name localhost;
limit_req zone=leilei burst=1;
limit_req_log_level warn;
access_log /var/log/nginx/access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
#----------------------------------------------------------------------------#
理解:
limit_req_zone $limit zone=leilei:1m rate=5r/m;
limit_req_log_level warn;
zone=leilei:1m :定义的缓存空间
rate=5r/m : 每分钟可以请求的次数 [还可以设置 5r/s 为每秒请求5次]
burst=1 : 在请求值超出后,不会马上返回错误,而是等待时间过了之后再返回,如果这个时间范围超出后,才会返回503错误
这个缓冲区,还可以在后添加nodelay; 代表返回503
爆发流量时会写入进缓冲区.如果缓冲区被写满就会返回503, 也就是允许的队列个数的意思.
$whiteiplist : 定义哪些会被限制. 0 为不限制 1为限制,1的点至就是 map下的limit_req_zone 控制速度
一分钟内的请求会被缓存到nginx中,超出1分钟后未被请求的自动放开, 如: 漏斗一样,一分钟请求 60个,在1分零1秒的时候,它在处理完第一个请求后会自动释放第一次请求,此时请求数会多出一个被允许的请求空位,用于响应下一个用户请求.
测试
[root@master ~]# curl -I 10.0.0.64
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Mon, 27 Apr 2020 06:01:02 GMT
Content-Type: text/html
Content-Length: 67703
Last-Modified: Mon, 27 Apr 2020 02:11:23 GMT
Connection: keep-alive
ETag: "5ea63f4b-10877"
Accept-Ranges: bytes
[root@master ~]# curl -I 10.0.0.64
HTTP/1.1 503 Service Temporarily Unavailable ## 超出限制 自动503
Server: nginx/1.16.1
Date: Mon, 27 Apr 2020 06:01:03 GMT
Content-Type: text/html
Content-Length: 3693
Connection: keep-alive
ETag: "5d958342-e6d"
对爬虫进行限流:
location / {
limit_req zone=leilei burst=2 nodelay;
if ($http_user_agent ~* "spider|Googlebot") {
set $anti_spider $http_user_agent;
}
}
nginx map模块使用和配置的更多相关文章
- Nginx map模块
L77 Syntax: map string $variable { ... } Default: — Context: http map 指令 curl -H 'aaaa:4444444' -H ' ...
- nginx 变量相关的map模块与split_clients模块及geo模块和geoip模块及keepalive介绍
map 模块指令默认编译进nginx的 Syntax: map string $variable { ... } # 表示string匹配到{}里的值或变量赋值给$variable Default: ...
- nginx负载均衡fair模块安装和配置
nginx-upstream-fair-master fair模块源码 官方github下载地址:https://github.com/gnosek/nginx-upstream-fair说明:如果从 ...
- Nginx中location模块的详细配置(含示例)
题记 此前在配置Nginx location模块的时候玩出了一些bug,折腾了一段时间.后来网上也查阅了相关的资料,看着也比较混乱.周末有空想着好好整理一下location模块的配置,结合自己的亲手实 ...
- nginx内置高可用配置与第三方高可用模块nginx_ustream_check_mudule配置
1. nginx 第三方高可用模块 IP 备注 10.0.0.63 proxy 10.0.0.64 web1 10.0.0.65 web2 这里会讲解一些nignx常用高可用方案,以及引入第三方高可用 ...
- nginx自定义模块编写-实时统计模块--转载
原文:http://www.vimer.cn/2012/05/nginx%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97%E7%BC%96%E5%86%99- ...
- nginx介绍(三) 配置篇
3. nginx配置 nginx配置系统受益于Igor Sysoev(nginx创始人)在Apache(阿帕奇软件基金会)的经历.Igor Sysoev洞察出可扩展的配置系统对于一个web服务器来说是 ...
- Nginx 常用模块
Nginx 常用模块 1. ngx_http_autoindex_module # ngx_http_autoindex_module模块处理以斜杠字符(' / ')结尾的请求,并生成一个目录列表. ...
- nginx fastcgi模块ngx_http_fastcgi_module详细解析、使用手册、完整翻译
ngx_http_fastcgi_module 模块允许将请求传递给 FastCGI 服务器. 示例配置 location / { fastcgi_pass localhost:9000; fastc ...
- Nginx功能模块汇总
主要文档 Nginx功能概述.为什么选择Nginx.Nginx安装.常见问题(FAQ).配置符号参考.调试 nginx.优化 Nginx.运行和控制Nginx 核心模块 Nginx事件模块.Nginx ...
随机推荐
- Ez_pycode_dis qsnctfwp
Python字节码基础 下载相关文件并打开,其中为 Python 字节码. 字节码格式为 源码行号 | 指令在函数中的偏移 | 指令符号 | 指令参数 | 实际参数值 根据上述字节码格式以及文件内容开 ...
- 重新整理 .net core 实践篇—————微服务的桥梁EventBus[三十一]
前言 简单介绍一下EventBus. 正文 EventBus 也就是集成事件,用于服务与服务之间的通信. 比如说我们的订单处理事件,当订单处理完毕后,我们如果通过api马上去调用后续接口. 比如说订单 ...
- Scratch3之AI集成 - flappy bird AI版本
AI神秘且有趣,我们一个经典的游戏flappy bird集成AI,实现自训练成长的聪明的笨鸟.先上效果: 初始化的笨鸟拥有分身,每个分身都有自我学习功能,根据自己的移动轨迹和得分情况进行汇总,进行新一 ...
- 力扣196(MySQL)-删除重复的电子邮箱(简单)
题目: 表: Person 编写一个 SQL 删除语句来 删除 所有重复的电子邮件,只保留一个id最小的唯一电子邮件. 以 任意顺序 返回结果表. (注意: 仅需要写删除语句,将自动对剩余结果进行查询 ...
- 力扣41(java)-缺失的第一个正数(困难)
题目: 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数. 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案. 示例 1: 输入:nums = [1,2,0 ...
- PolarDB-X拆分键推荐
简介: PolarDB-X 2.0提供了透明分布式的能力,默认进行主键的哈希拆分,让用户无感知的从单机数据库迁移到分布式数据库.拆分键的选择是学术界和工业界研究已久的问题,一个重要选型是tp优先还是a ...
- 最佳实践:使用阿里云CDN加速OSS访问
简介: 用户直接访问OSS资源,访问速度会受到OSS的下行带宽以及Bucket地域的限制.如果通过CDN来访问OSS资源,带宽上限更高,并且可以将OSS的资源缓存至就近的CDN节点,通过CDN节点进行 ...
- 贾扬清演讲实录:一个AI开发者的奇幻漂流
简介:2021阿里灵杰AI工程化峰会,贾扬清深度解读阿里灵杰大数据和AI一体化平台. 演讲人:贾扬清 演讲主题:一个AI开发者的奇幻漂流 活动:2021阿里灵杰AI工程化峰会 对于绝大多数人来说,这 ...
- Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航
简介: 通过引入MaxCompute和Quick BI,大东解决了以往数据查询即刻导致数据库闪崩的状况,还搭建起完善的报表体系,稳定应对高频.高并发的数据分析. 大东鞋业一季大约有500款的新品.大区 ...
- [CosmWasm] 安装 Rust 和 wasm32 (Linux & Mac)
先用 rustup 安装 Rust 语言,再确保你拥有wasm32目标. $ rustup default stable $ cargo version # If this is lower th ...