nginx自定义变量与内置预定义变量的使用
本文详细介绍了nginx自定义变量和内置预定义变量的应用。原文根据示例代码非常详细,对大家的学习培训或者工作都有一定的参考价值。有必要的朋友陪我去了解一下。
一览
Nginx可以使用变量来简化装备和升级装备之间的协调能力,所有变量值都可以按照这个方法引入:
$变量名
nginx中的变量分为两种:自定义变量和内置预定义变量
内置变量
声明
能够应用set指令(非唯一的)来声明sever、http、location等标签中的变量。英语语法如下
set$变量名变量值
注意nginx中的变量必须都以$
开头
因此可见性
NGX的环境变量中所有应用的变量都必须声明,否则nginx将无法启动并打印异常日志
nginx变量的一个有趣的特点是nginx中的变量没有一个是全局的,这说明它们不是全局变量。例如,下面的例子
locationa/{
return200$a
}
locationb/{
set$ahellonginx
return200$a
}
由于变量是全局可见的,nginx启动时不容易出错,而且$a的实际值在第一个位置不知道,所以返回的响应结果是一个空字符串。
不同级别标签中声明的可变性可见性标准如下:
这个位置块可以从位置标签中声明的变量中看到。
服务器标记中声明的变量对服务器块及其所有子块都是可见的。
http标记中声明的变量对http块及其所有子块都是可见的。
内置预定义变量
内置预定义变量是无需声明即可应用的变量。通常,它们包含http请求或响应的一部分的值。以下是一些常见的内置预定义变量
变量名
定义 |
$arg_PARAMETER
GET请求中变量名参数的主参数值。
变量$args
相当于GET要求中的主参数。比如foo=123&bar=blahblah此变量只能被更改
$binary_remote_addr
手机客户端在二进制代码模式下的详细地址。
$body_bytes_sent
传输网页的字节数
$content_length
请求标头中内容长度字段的名称。
$content_type
请求标头中内容类型字段的名称。
$cookie_cookie
cookiecookiecookie的值。
$document_root
今天需要root命令中的特定值。
$document_uri
与$uri相同。
如果请求中的服务器头不能使用或空,则$Host
请求中的服务器头的字段名称是解析请求的服务器的名称(解析请求的服务器的server_name命令的值)。数字小写字母,不包括端口号。
$hostname
的设备名是gethostname系统进程
的值
$HTTP_HEADER
HTTP请求头中的内容。头是HTTP请求中的内容,变成小写,-变成_(破折号变成下面的横线),比如:$HTTP_user_agent(uaer-agent的值);
$sent_HTTP_HEADER
HTTP响应头中的内容。Header是指HTTP响应中的内容变成小写字母,-变成_(破折号变成下面的横线),比如:$sent_http_cache_control,$sent_HTTP_content_type……;
$is_args
如果设置了$args,则值“?”,否则就是""。
变量$limit_rate
可以限制连接速度。
$nginx_version
nginx今天在运营的版本信息。
$query_string
与$args相同。
$remote_addr
移动客户端的IP地址。
$remote_port
移动客户端的端口号。
$remote_user
已由AuthBasic模块验证的登录名。
$request_filename
今天加入所需的文件路径,由root或alias命令和URI要求组成。
变量$request_body
(0.7.58)包括所需的关键信息内容。它在应用proxy_pass或fastcgi_pass命令的位置更有意义。
$request_body_file
移动客户端请求主题信息的临时文件夹的名称。
$request_completion
如果请求成功,设置为“OK”;如果需求没有完成或者不是一系列需求的最后一部分,则设置为空。
变量$request_method
是手机客户端需要的手势,一般是GET或者POST。在0.8.20和更早的版本号中,该变量始终是主请求中的状态。如果当前需求是一个子需求,那么当前需求的状态就不会被应用。
变量$request_URI
相当于包含手机客户端需要的一些主要参数的初始URI。这是无法改变的。请查询$uri以更改或调用uri。
$scheme
常用协议,比如http或者https,比如rewrite(。)$$scheme://example.comredirect;
$server_addr
服务器ip,可以在系统进程之后指定。如果要避开系统进程,必须在listen中指定详细地址,并应用bind的主参数。
$server_name
服务器名称。
$server_port
需要到达网络服务器的服务器端口。
$server_protocol
要求的协议一般是HTTP/1.0或者HTTP/1.1。
$uri
请求中的当前URI(不需要主参数,主参数位于args中),不同于电脑浏览器传输的args,也不同于浏览器传输的request_uri的值。它可以根据内部跳转或通过应用索引命令来改变。不包括协议和IP地址,例如/foo/bar.html
到目前为止,本文已经详细介绍了nginx自定义变量和内置预定义变量的应用。有关nginx自定义变量和内置预定义变量的大量内容,请搜索您以前的文章或再次访问下面的相关文章。期待你以后更多的应用!
评论列表(0条)