nginx学习2-变量

一、nginx变量

1)set指令:server,location

set $v 0;

 

2)map模块:http

map $v $b {

    0 'baidu';

    1 'google';

}

 

3)geo模块:http

geo  $geo  {

         default      default;

         192.168.1.0/24   aa;

         192.168.2.0/24   bb;

}

upstream  aa.server {

        server 192.168.3.1:8081;

}

upstream  bb.server {

        server 192.168.3.1:8082;

}

upstream  default.server {

        server 192.168.3.1:8080;

}

 

4)正则匹配生成变量$domain

server {

    server_name ~^(www\.)?(?<domain>.+)$;

    location / {

        root /sites/$domain;

    }

    location ~* \.(gif|jpg|jpeg)$ {

        root htdocs/$1;

    }

}

5)内建变量:有90%都是在ngx_variables.c定义的,剩下的跟在各个功能实现模块里面

--名称固定,如:

$request_time:请求的响应时间

$upstream_response_time:后端处理请求的时间

$uri、$request_uri、$host等

--前缀匹配:


 

6)变量类型

--只读:大部分nginx的内建变量都是只读变量,常用的例外是$args变

--可读写:

1. 核心内建变量$args、某些模块的内建变量

2. set 设置的变量

3. map、geo创建的变量

4. 正则匹配创建的变量

 

7)变量值的传递:在一次请求处理过程中经历的所有块中共享传递

1.内部rewrite、内部跳转和子请求三种情况下变量值是共享的

2.共享不代表值不改变,比如$arg_XXX这类动态计算的变量值

8)变量的一些特点

1.不区分大小写

2.如要获取请求头的Accept-Charset,写成$http_accept_charset

3.$request_time时间为0,因为nginx时间有缓存

 

 

 

猜你喜欢

转载自mingren135.iteye.com/blog/1870037