• nginx 变量相关的map模块与split_clients模块及geo模块和geoip模块及keepalive介绍


    map 模块指令默认编译进nginx的
    Syntax: map string $variable { ... }  # 表示string匹配到{}里的值或变量赋值给$variable
    Default: —
    Context: http
    Syntax: map_hash_bucket_size size;
    Default: map_hash_bucket_size 32|64|128; 
    Context: http
    Syntax: map_hash_max_size size;
    Default: map_hash_max_size 2048; 
    Context: http
    

      配置

          
    [root@python vhast]# cat mo.conf 
    map $http_host $name {
    	hostnames;
    	default 0;
    	~map.taow+.org.cn 1;
    	*.taohui.org.cn 2;
    	map.taohui.tech 3;
    	map.taohui.* 4;
    	}
    map $http_user_agent $mobile {
    	default 0;
    	"~Opera Mini" 1;
    	}
    server {
    	listen 10001;
    	default_type text/plain;
    	location /{
    		return 200 "$http_host:$name:$mobile
    ";
    	}
    }
    

      测试

    [root@python vhast]# curl -H 'Host: map.tao123.org.cn' 127.0.0.1:10001
    map.tao123.org.cn:1:0
    [root@python vhast]# curl -H 'Host: map.taohui.pub' 127.0.0.1:10001
    map.taohui.pub:4:0
    [root@python vhast]# curl -H 'Host: map.taohui.tech' 127.0.0.1:10001
    map.taohui.tech:3:0
    

     split_clients 指令介绍

     

    Syntax: split_clients string $variable { ... }
    Default: —
    Context: http
    

      

    配置

    split_clients "${http_testcli}" $variant {
    	0.51% .one;
    	20.0% .two;
    	50.5% .three;
    	#40% .four;
    	* "";
    }
    server {
    	server_name split_clients.com;
    	default_type text/plain;
    	location /{
    		return 200 'ABtest$variant
    ';
    	}
    }
    

      测试

    [root@python vhast]# curl -H 'testcli: 456152gy323v' split_clients.com/
    ABtest.two
    [root@python vhast]# curl -H 'testcli: 4561238852ohugy323v' split_clients.com/
    ABtest.three
    [root@python vhast]# curl -H 'testcli: 45' split_clients.com/
    ABtest.two
    [root@python vhast]# curl -H 'testcli: 45ftdr' split_clients.com/
    ABtest
    

      geo模块:根据IP创建新变量

    指令

    Syntax: geo [$address] $variable { ... }
    Default: —
    Context: http
    

     配置

    server {
            server_name split_clients.com;
            default_type text/plain;
            location /{
                    return 200 '$country
    ';
            }
    }
    
    geo $country {
            default ZZ;
            #include conf/geo.conf;
            proxy 192.168.183.4;
            127.0.0.0/24 US;
            127.0.0.1/32 RU;
            10.1.0.0/16 RU;
            192.168.1.0/24 UK;
            }
    

      测试

    [root@python vhast]# curl -H 'X-Forwarded-For: 10.1.0.0,127.0.0.2'
    split_clients.com
    US
    [root@python vhast]# curl -H 'X-Forwarded-For: 10.1.0.0,127.0.0.1' split_clients.com
    RU
    [root@python vhast]# curl -H 'X-Forwarded-For: 10.1.0.0,127.0.0.1,1.2.3.4' split_clients.com
    ZZ
    

      使用变量查找用户地理位置geoip模块;默认未启用此功能;--with-http_geoip_module 编译进去

    安装模块依赖的库

    yum -y install GeoIP GeoIP-devel GeoIP-data
    

        编译安装依赖库

    wget https://github.com/maxmind/geoip-api-c/releases/download/v1.6.12/GeoIP-1.6.12.tar.gz
    tar xf GeoIP-1.6.12.tar.gz 
    cd GeoIP-1.6.12/
    ./configure 
    make && make install
    

     

    重新编译nginx

    [root@python nginx-1.15.9]# ./configure --prefix=/data/web --sbin-path=/usr/bin --user=nginx --group=nginx --with-http_stub_status_module --with-http_auth_request_module --with-http_sub_module --add-module=/root/nginx-http-concat --with-http_addition_module --with-http_
    secure_link_module --with-http_geoip_module
    [root@python nginx-1.15.9]# make 
    [root@python nginx-1.15.9]# mv /usr/bin/nginx{,.07.13.16.31}
    [root@python nginx-1.15.9]# mv objs/nginx /usr/bin/
    

      指令介绍

    Syntax: geoip_country file;#指定国家的地址文件
    Default: —
    Context: http
    Syntax: geoip_proxy address | CIDR;  #信任的IP地址
    Default: —
    Context: http
    

      变量介绍

    geoip_city 提供的变量

     配置在http字段配置

    server {
    	server_name split_clients.com;
    	default_type text/plain;
    	location /{
    		return 200 'country:$geoip_country_code,$geoip_country_code3,$geoip_country_name 
    country from city:$geoip_city_continent_code,$geoip_city_country_code3,$geoip_city_country_name
    ';
    	}
    }
    
    geo $country {
    	default ZZ;
    	#include conf/geo.conf;
    	proxy 192.168.183.4;
    	127.0.0.0/24 US;
    	127.0.0.1/32 RU;
    	10.1.0.0/16 RU;
    	192.168.1.0/24 UK;
    	}
    geoip_country  /usr/share/GeoIP/GeoIP-initial.dat;
    geoip_city   /usr/share/GeoIP/GeoIPCity-initial.dat;
    geoip_proxy 192.168.183.4/32;
    geoip_proxy_recursive on;
    

      测试

    [root@python vhast]# curl -H 'X-Forwarded-For: 104.248.224.193,121.8.98.197' split_clients.com
    country:CN,CHN,China 
    country from city:AS,CHN,China
    [root@python vhast]# curl -H 'X-Forwarded-For: 104.248.224.193' split_clients.com
    country:US,USA,United States 
    country from city:NA,USA,United States
    [root@python vhast]# curl -H 'X-Forwarded-For: 77.48.21.58' split_clients.com
    country:CZ,CZE,Czech Republic 
    country from city:EU,CZE,Czech Republic
    

     keepalive模块

    指令介绍

    Syntax: keepalive_disable none | browser ...;#对某些浏览器不适应此功能
    Default: keepalive_disable msie6; 
    Context: http, server, location
    Syntax: keepalive_requests number;   #表示在一个http最多执行多少个请求默认100
    Default: keepalive_requests 100; 
    Context: http, server, location
    Syntax: keepalive_timeout timeout [header_timeout];  跟两个时间,第一个是当请求完第一次后多长时间没请求我就断开连接默认75秒;第二个表示向浏览器返回这个连接保持的时间
    Default: keepalive_timeout 75s; 
    Context: http, server, location
    

      

      

     

    草都可以从石头缝隙中长出来更可况你呢
  • 相关阅读:
    文字转语音功能
    windows定时计划任务
    写电子合同,爬过的坑,趟过的雷,犯过的错,都是泪
    前端应该如何去认识http
    I/O理解
    观察者模式
    js --代理模式
    js --策略模式
    js --单例模式
    js 单线程 异步
  • 原文地址:https://www.cnblogs.com/rdchenxi/p/11181131.html
Copyright © 2020-2023  润新知