上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.4 变量
“变量”是Nginx内部保存的运行时HTTP/TCP请求相关数据,可以在编写配置文件时任意引用,使得编写Nginx配置文件更像是编写程序(但注意不要与编程语言里的变量概念混淆,两者是完全不同的)。
在配置文件里使用变量需要以“$”开头,例如$request_method、$args、$uri等(这与Shell和Perl是一样的)。变量的用法很多,例如记录访问日志,设置反向代理的参数,或者传递给Lua程序获取各种运行时信息。
以下列举了几个在HTTP服务里较常见的变量:
■ $uri :当前请求的URI,但不含“? ”后的参数; ■ $args :当前请求的参数,即“? ”后的字符串; ■ $arg_xxx :当前请求里的某个参数,“arg_”后是参数的名字; ■ $http_xxx :当前请求里的xxx头部对应的值; ■ $sent_http_xxx :返回给客户端的响应头部对应的值; ■ $remote_addr :客户端IP地址。
如果执行下面的curl命令:
curl 'http://localhost/index.html? a=1&b=2' -H 'hello: world'
那么这些变量的值就是:
$uri = /index.html $args = a=1&b=2 $arg_a = 1
$arg_b = 2 $http_hello = world $sent_http_server = openresty/1.13.6.2 $remote_addr = 127.0.0.1
Nginx内置的变量非常多,详细的列表可以参考Nginx官网文档。此外,Nginx也允许使用指令自定义变量,最常用的就是set,例如:
set $max_size 10000; #定义变量$max_size="10000"