当前位置: 首页 > 编程笔记 >

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

华宪
2023-03-14
本文向大家介绍记录Nginx服务器的Split Clients模块配置过程,包括了记录Nginx服务器的Split Clients模块配置过程的使用技巧和注意事项,需要的朋友参考一下

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段的分到哪个服务器上~!

 类似资料:
  • 主要内容:1. 设置虚拟服务器,2. 配置位置,3. 使用变量,4. 返回特定状态码,重写URI请求,5. 重写HTTP响应本文介绍如何将NGINX配置作为Web服务器,并包括以下部分: 设置虚拟服务器 配置位置 使用变量 返回特定状态码 重写请求中的URI 重写HTTP响应 处理错误 在高层次上,将NGINX配置作为Web服务器有一些问题需要了解,定义它处理哪些URL以及如何处理这些URL上的资源的HTTP请求。 在较低层次上,配置定义了一组控制对特定域或IP地址的请求的处理的虚拟服务器。 用

  • 以下是配置一个生产Web服务器一般过程: 要拥有一个正在运行的生产Web服务器,需要一个运行Linux/Unix,Windows或MacOS等的专用节点(物理/虚拟或云实例)。 Web服务器必须具有直接网络连接并在服务器上配置静态IP地址。 它需要拥有运行网页所需的所有模块。如果Web服务器处理PHP页面,则需要启用PHP模块。 它还需要配置并运行良好的防病毒应用程序,以保护Web服务器免受恶意软

  • 本文向大家介绍Nginx服务器中配置GeoIP模块来拦截指定国家IP,包括了Nginx服务器中配置GeoIP模块来拦截指定国家IP的使用技巧和注意事项,需要的朋友参考一下 最近有一个网站项目需求:需要屏蔽国内的方问请求。花时间研究了一下这方面的资料。目前找到的最佳方法就是使用 Nginx 的 GeoIP 模块来实现地区的识别。然后配置相关国家的 ISO 名称,禁止访问即可。记录一下相关过程。 编译

  • 主要内容:1. 根目录和索引文件,2. 尝试几个选项,3. 优化NGINX服务内容的速度本节介绍如何使用NGINX来提供静态内容服务,定义搜索路径以查找请求的文件的方法,以及如何设置索引文件。 在这个部分,我们主要涉及以下几个方面的内容: 根目录和索引文件 尝试几个选项 优化NGINX服务内容的速度 1. 根目录和索引文件 root指令指定将用于搜索文件的根目录。 要获取请求文件的路径,NGINX将请求URI附加到指令指定的路径。 该指令可以放置在,或上下文中的任何级别上。 在下面的

  • 本文向大家介绍简介Nginx服务器的Websockets配置方法,包括了简介Nginx服务器的Websockets配置方法的使用技巧和注意事项,需要的朋友参考一下 Nginx 1.3.13 已经发布了,该版本支持 Connection: upgrade 和 Upgrade 头,这就意味着支持WebSocket代理了.很多人都在等这个新特性以至于 “Nginx 支持 websockets 吗?” 成

  • 本文向大家介绍简单记录Cent OS服务器配置JDK+Tomcat+MySQL,包括了简单记录Cent OS服务器配置JDK+Tomcat+MySQL的使用技巧和注意事项,需要的朋友参考一下 项目需要部署到一台CentOS的服务器之上,之前这台服务器上面已经安装了一个Nginx和MySQL,跑的是PHP环境,有一个项目正在运行。而我们最新的项目是用Java写的,服务器是用的Tomcat,所以势必需