记录Nginx服务器的Split Clients模块配置过程_nginx

ngx-http-split-clients模块基于一些特定条件分开客户端连接,(例如ip地址,请求头,cookies等)
示例配置:

http {
  split-clients "${remote-addr}AAA" $variant {
    0.5% .one;
    2.0% .two;
    - "";
  }

  server {
    location / {
       index index${variant}.html;

可以使用$cookie-…作为来源来分离请求,来源字符串使用CRC32进行哈希计算并且哈希百分比将作为来源的值。
指令

split-clients

语法:split-clients $variable { … }
默认值:none
使用字段:http

发现模块官网wiki给的上面的示例配置代码有几点问题,我编译安装后,按照wiki的方法配置nginx.conf 报错。

我实际的代码是:

http {
  split_clients "${remote_addr}AAA" $variant {
    0.5% .one;
    2% .two;
    3% .eric;
    4% .yang;
    50% .thr;
    * "";
  }

  server {
    location / {
       index index${variant}.html;
  }

然后新建几个文件

cd /usr/local/nginx/html/

echo "one" >index.one.html
echo "two" >index.two.html
echo "eric" >index.eric.html
echo "thr" >index.thr.html

配置差别:

wiki : split-clients   eric:split_clients
wiki : remote-addr    eric: remote_addr
wiki : - "";      eric: * "";

关于这些错误的发现是因为 nginx 有 remote_addr 变量 并没有 remote-addr ·我就顺藤摸瓜·
随后我来讲下 Split Clients模块的一点点知识,我自己时间测试出来的~
关于测试,我们在 nginx 的错误日志上 输出 ${variant} 变量

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
         '$status $body_bytes_sent "$http_referer" '
         '"$http_user_agent" "$http_x_forwarded_for" "$variant"';

以便于我们测试结果。
Split Clients 的模块 模块 是切割 客户端IP 然后然后 使用CRC32的 算出一个值去匹配·
在 俄文网站上 翻译出这么一段:
该指令创造了A / B分割一变
测试,例如:

http {
  split_clients "${remote_addr}AAA" $variant {
    0.5% .one;
    2% .two;
    * "";
  }

原来的字符串变量的值是哈希
使用CRC32的。在这个例子中,当
哈希值从0到21474836(0.5%),变量$变种
有值“。之一”。如果哈希值21474837
至107374182(2%) - “。两个”。而如果从107374183哈希值
4294967297 - “”。
也就是说,比如 我的IP地址是 192.168.1.29 服务器IP 为 192.168.1.28
当我访问 nginx 的时候,nginx 会切割我的IP地址 匹配到 .1
日志:

复制代码 代码如下:

192.168.1.29 - - [01/Apr/2011:15:39:17 +0800] "GET / HTTP/1.1" 403 571 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)" "-" ".thr"

看到的页面是 thr
当我修改我的 IP 为 192.168.220.29 服务器IP 为 192.168.220.28
在看日志:

复制代码 代码如下:

192.168.220.29 - - [01/Apr/2011:15:44:46 +0800] "GET / HTTP/1.1" 403 571 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)" "-" ".two"

看到的页面是 two
PS:这样的画 nginx 里的$variant 变量 可以给我们带来各种好处了·判断来自哪个IP段的分到哪个服务器上~!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索nginx
, 模块
, 配置
nginx配置
nginx split clients、split clients、nginx max clients、nginx split、nginx log split,以便于您获取更多的相关知识。

时间: 2024-10-12 05:47:28

记录Nginx服务器的Split Clients模块配置过程_nginx的相关文章

详解Linux环境下使Nginx服务器支持中文url的配置流程_nginx

1:确定你的系统是UTF编码 [root@Tserver ~]# env|grep LANG LANG=en_US.UTF-8 2:NGINX配置文件里默认编码设置为utf-8 server { listen 80; server_name .inginx.com ; index index.html index.htm index.php; root /usr/local/nginx/html/inginx.com; charset utf-8; } 如果是用securecrt 上传文件,请选

Nginx服务器限制访问速度的配置方法_nginx

用Nginx建站的同学,常会有限速需求.开发测试阶段在本地限速模拟公网的环境,方便调试.投入运营会有限制附件下限速度,限制每个用户的访问速度,限制每个IP的链接速度等需求. 刚遇到一个Bug在网络很卡的情况下才能重现,本地调试访问本机速度太快,配置Nginx成功达到限速目的,在此分享出来. 配置简单,只需3行,打开"nginx根目录/conf/nginx.conf"配置文件修改如下: http{ -- limit_zone one $binary_remote_addr 10m; --

Nginx服务器相关的一些安全配置建议_nginx

 Nginx是当今最流行的Web服务器之一.它为世界上7%的web流量提供服务而且正在以惊人的速度增长.它是个让人惊奇的服务器,我愿意部署它. 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你的Nginx部署是安全的. 1. 在配置文件中小心使用"if".它是重写模块的一部分,不应该在任何地方使用.     "if"声明是重写模块评估指令强制性的部分.换个说法,Nginx的配置一般来说是声明式的.在有些情况下,由于用户的需求,他们试图在一些非重写指令内使用

自动化Nginx服务器的反向代理的配置方法

  这篇文章主要介绍了自动化Nginx服务器的反向代理的配置方法,反向代理是Nginx服务器的招牌功能,需要的朋友可以参考下 如果可以减少过多的外部隔离的API和简化部署的细节 这会是非常好的. 在以前的文章中,我解释了"一些使用反向代理的好处".在我目前的项目里,我们已经构建分布式面向服务的架构,也显式提供了一个HTTP API,我们使用反向代理将请求路由通过API路由给单个组件.我们选择了Nginx Web这个优秀的服务器作为我们的反向代理,它快速.可靠且易于配置.我们通过它将多个

Windows系统下Nginx服务器的基本安装和配置方法介绍_nginx

下载地址:http://nginx.org/download/nginx-1.2.4.zip 下载后直接解压到你的硬盘上,我的是d:\nginx 启动nginx cd d: cd nginx-1.2.4 start nginx 查看任务任务管理器里面会有nginx的进程 在浏览器输入http://127.0.0.1 此时会出现nginx的欢迎界面,说明启动nginx成功. Welcome to nginx! If you see this page, the nginx web server i

Nginx开启stub_status模块配置方法_nginx

Nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定: 复制代码 代码如下: ./configure –with-http_stub_status_module 一.查看已安装的 Nginx 是否包含 stub_status 模块 复制代码 代码如下: #/usr/local/nginx/sbin/nginx -V 如果包含 stub_status 模块,那么就可以进行下面的步骤了:

使用Nginx中自带的模块配置缩略图功能的教程_nginx

http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用.安装安装还是很简单的,默认HttpImageFilterModule模块是不会编译进nginx的,所以要在configure时候指定 ./configure arguments

Nginx服务器设置网站验证访问的方法_nginx

为网站目录设置访问验证之后我们就是进入此页面都需要输入验证密码才可以,下面我来介绍nginx中配置目录访问验证码方法总结. 1.创建类htpasswd文件 执行:   wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 按提示输入用户名.密码.及认证文件名.脚本会自动生成认证文件.记录下脚本返回的文件路径.如:/usr/local/nginx/conf/vpser.net.auth. 2.为Nginx添加auth认证配置 下面

Nginx+SSL+Node.js运行环境配置教程_nginx

Nginx是一款高性能的HTTP服务器,同时也是一款高效的反向代理服务器.不像传统的服务器,Nginx是基于事件驱动的异步架构,内存占用少但是性能很好.如果你的Web应用是基于Node.js的,那么建议你考虑使用Nginx来做反向代理,因为Nginx可以非常高效地提供静态文件服务.本文的主要内容是在不同的操作系统下配置Nginx和SSL,并且搭建一个Node.js运行环境. 安装Nginx 假设你已经在服务器上安装了Node.js,下面我们来安装Nginx. 在Mac系统上安装Nginx 利用c