nginx变量说明
概述
nginx的变量设计非常巧妙,可以实现强大的动态配置,也是module和module之间通信的一种有效手段,通俗的理解,变量就是在配置文件中,以$开头的配置。任何模块都可以导出变量,但是变量名不要和系统内置的变量名冲突。
变量的属性
NGX_HTTP_VAR_CHANGEABLE #变量的可变的,不能set
NGX_HTTP_VAR_NOCACHEABLE #如果设置为1,ngx_http_get_flushed_variable不能从r->variables获取,需要直接去取
NGX_HTTP_VAR_INDEXED #可通过r->variables的index读取的变量
NGX_HTTP_VAR_NOHASH #该变量不需要被hash,不放入variables_hash里面去
内置变量说明
除了content_length、host、status、remote_addr、request等系统内置变量外,还有特殊前缀的变量可供nginx配置、module调度使用.
前缀 | get_hander | 说明 | 举例 |
---|---|---|---|
http_xxx | ngx_http_variable_unknown_header_in | 从header_in获取变量 | http_logid,获取请求头的logid |
sent_http_xxx | ngx_http_variable_unknown_header_out | 从header_out获取变量 | sent_http_xxx |
cookie_xxx | ngx_http_variable_cookie | 从cookie中获取变量 | cookie_baiduid |
arg_xxx | ngx_http_variable_argument | 从args出解析变量 | arg_ie |