nginx模块之split_clients
split_clients模块默认已经编译进Nginx , 通过–without-http_split_clients_module 禁用。
功能:
1、基于已有变量创建新变量,可为实现AB测试提供更多的可能性。
2、对已有变量的值执行MurmurHash2算法得到32位整型哈希数字,记为hash。
3、32位无符号整型的最大数字2^32-1,记为max。
4、哈希数字与最大数字相除hash/max,可以得到百分比percent。
5、配置指令中只是了各个百分比构成的范围,如0-1%,1%-5%等,及范围对应的值。
6、当percent落在哪个范围里,新变量的值就对应着其后的参数。
已有变量
1、字符串
2、一个或多个变量
3、变量与字符串的组合
case规则
1、xx.xx% ,支持小数点后2位,所有项的百分比相加不能超过100% 。
2、* ,由它匹配剩余的百分比(100%减去以上所有相加的百分比)。
split_clients指令
Syntax: split_clients string $variable { ... }
Default: ---
Context: http
http {lua_shared_dict nginxcache 60m;include mime.types;default_type application/octet-stream;log_format session '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''upstream_cache_status=$upstream_cache_status ''"$http_user_agent" "$http_x_forwarded_for" "request_time $request_time"';access_log logs/access.log session;error_log logs/error.log error;sendfile on;keepalive_timeout 65;client_max_body_size 2m;client_body_buffer_size 512k;proxy_cache_revalidate on;proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;proxy_cache_lock on;proxy_cache_lock_timeout 6s;proxy_cache_lock_age 6s;proxy_connect_timeout 75;proxy_send_timeout 75;proxy_read_timeout 75;proxy_buffer_size 16k;proxy_buffers 4 64k;proxy_busy_buffers_size 128k;proxy_temp_file_write_size 128k;proxy_temp_path ../proxy_temp;upstream upstream {server 192.168.1.10:8080 max_fails=1 fail_timeout=1m;}#可是怎么让请求均匀的分配到这三块盘上呢,一般是配置split_clients方法,方法如下:split_clients $request_uri $disk {33% disk1;33% disk2;* disk3;}#nginx做缓存的时候,可能用到多快盘。比如如下配置:proxy_cache_path /disk1 levels=1:2 keys_zone=cache_disk1:600m max_size=10g inactive=7d use_temp_path=off;proxy_cache_path /disk2 levels=1:2 keys_zone=cache_disk2:600m max_size=10g inactive=7d use_temp_path=off;proxy_cache_path /disk3 levels=1:2 keys_zone=cache_disk3:600m max_size=10g inactive=7d use_temp_path=off;server {listen 8080;server_name localhost;#之后在location中配置如下:location ~ (amber\.um38)$ {proxy_pass http://upstream;add_header Nginx-Cache "$upstream_cache_status";proxy_cache_valid 10s;proxy_cache_key $uri;proxy_cache cache_$disk;}}
}
nginx模块之split_clients相关推荐
- Nginx 模块开发高级篇
Nginx 模块开发高级篇 变量 综述 在Nginx中同一个请求需要在模块之间数据的传递或者说在配置文件里面使用模块动态的数据一般来说都是使用变量,比如在HTTP模块中导出了host/remote_a ...
- 实现第一个自定义nginx模块
实现第一个自定义nginx模块 下面的过程详细记录了如何实现第一个自定义的nginx模块,对nginx入门者包括我很有参考价值,特记录如下. 前提 假定以root身份已经在CentOS 6.8 x86 ...
- 解决编译nginx模块与rpm包安装的nginx不兼容问题
环境:centos nginx-10.0.1 现象: 自己开发一个nginx模块,放到rpm包安装的nginx服务器上启动服务时报错如下: 30490#0: module "/usr/li ...
- Nginx虚拟主机、Nginx模块的安装使用(加密模块--with-http_ssl_module)
一,Nginx虚拟主机(一个nginx实现多个网站) 1,基于域名的虚拟主机 1)修改Nginx服务配置,添加相关虚拟主机配置如下 # vim /usr/local/nginx/conf/nginx. ...
- Nginx模块开发入门
前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ...
- Nginx 模块开发
Nginx 模块概述 Nginx 模块有三种角色: 处理请求并产生输出的 Handler 模块: 处理由 Handler 产生的输出的 Filter(滤波器)模块: 当出现多个后台服务器时,Load- ...
- 《深入理解NGINX 模块开发与架构解析》之摘抄学习
1.基于Nginx框架开发程序有5个优势: (1).Nginx将网络.磁盘及定时器等异步事件的驱动都做了非常好的封装,基于它开发将可以忽略这些事件处理的细节; (2).Nginx封装了许多平台无关的接 ...
- Nginx 模块的使用
Nginx模块的使用,就是在Nginx配置文件中的http.server.location中添加参数,进行多一项或几项处理 一. 实现响应内容替换 1.sub_module 二.Nginx的请求限制 ...
- 流量复制_详解Linux系统流量复制--gor、tcpcopy、nginx模块流量复制等
概述 对于一些有并发要求的业务,特别是对接外部流量时,产品上线前一定要做的就是压力测试,但是常规的压力测试并不能覆盖所有情况.以gemeter.ab,.webbench.http_load为例,这些通 ...
- Nginx模块开发—Nginx代码规范
2019独角兽企业重金招聘Python工程师标准>>> 1.简介 基本上,Nginx所采用的是一种类似BSD的C代码风格,很规范.也很清晰.建议我们的Nginx模块开发也采用Ngin ...
最新文章
- SQL查询语句总是先执行SELECT?你们都错了。。。
- python1000个常用代码-1000个常用的Python库和示例代码
- java对象 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
- My first App EncryptWheel is in WAITING FOR REVIEW status
- crypto——明文攻击
- 【Linux】一步一步学Linux——bg命令(131)
- 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)
- mysql 视图锁_如何诊断和处理锁等待
- go 错误处理总结
- android里R.layout.的问题
- GTN-Graph Transformer Network 图变换网络 NeurIPS2019
- 计蒜客挑战难题:泥塑课
- log4j.xml示例_log4j.xml示例配置
- 剑指offer-面试题37:序列化二叉树及二叉树的基本操作和测试
- matlab中的m-file,MATLAB m-file帮助格式化
- bios sgx需要开启吗_惠普HP笔记本预装win8改装成win7系统BIOS设置与安装方法
- 魔兽怀旧服怎么找不到服务器,魔兽世界怀旧服世界服务器无法连接怎么办
- 深入学习D3JS:d3-array Statistics部分 d3.min, d3.max,d3.extent,d3.sum,d3.scan,d3.ascending,d3.deviation
- mac制作ubuntu 18.04 U盘启动盘
- window创建l2tp
热门文章
- 赛特斯艰难上市,“软件定义通信”的路并不好走
- 2022-2028年全球厨房炉灶行业供需分析及发展前景研究报告
- curly怎么读(curly怎么读音发音英语怎么说)
- Reinforcement Learning from Simultaneous Human and MDP Reward个人理解
- Android平台和java平台DES加密解密互通程序及其不能互通的原因(转)
- Unity笔记-29-ARPG游戏项目-12-完善弓箭
- oracle按照拼音排序,ORACLE根据中文拼音首字母排序、取得中文拼音首字母函数
- 【数据分析/挖掘】如何处理类别型特征?常用编码方式?Python实现?
- 数学建模(4):动态规划
- 苹果mac系统隐藏文件的显示和取消显示