1.5.4 配置变量

Nginx配置文件支持使用变量,可以使用内置变量,也可以自定义变量。

1.内置变量

Nginx可以使用内置变量来配置指令。 例如,配置日志格式如下:

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

$remote_addr与$http_x_forwarded_for:用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态,成功是200;
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从那个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;

Nginx 变量名前面有一个“$”符号,这是记法上的要求。所有的 Nginx 变量在 Nginx 配置文件中引用时都须带上“$”前缀。 http核心模块的内置变量请参考官网:http://nginx.org/en/docs/varindex.html。

2.自定义变量

用户也可以自定义变量,语法为:set var_name value。 例如:

set $a "hello world";

我们使用了标准ngx_rewrite模块的set配置指令对变量“$a”进行了赋值操作,把字符串“hello world”赋给了它。 虽然“$”这样的变量前缀修饰会让正统的Java和C#程序员不舒服,但这种表示方法的好处也是显而易见的,那就是可以直接把变量嵌入到字符串常量中以构造出新的字符串。 例如:

set $a "hello world"; 
set $b "$a, $a";

这里我们通过已有的Nginx变量$a的值,来构造变量$b的值,于是这两条指令顺序执行完之后,$a的值是“hello world”,而$b的值则是“hello world,hello world”。

results matching ""

    No results matching ""