Nginx变量.md
ngx_http_core_module
ngx_http_core_module模块支持名称与Apache服务器变量匹配的嵌入式变量。 首先,这些是表示客户请求头字段的变量,例如$ http_user_agent,$ http_cookie等等。 还有其他变量:
| 变量 | 含义 |
|---|---|
| $arg_name | 请求行中的参数名称 |
| $args | 请求行中的参数 |
| $binary_remote_addr | 客户端地址为二进制形式,值的长度对于IPv4地址始终为4字节,对于IPv6地址为16字节 |
| $body_bytes_sent | 发送到客户端的字节数,不计数响应头; 此变量与mod_log_config Apache模块的“%B”参数兼容 |
| $bytes_sent | 发送到客户端的字节数(1.3.8,1.2.5) |
| $connection | 连接序列号(1.3.8,1.2.5) |
| $connection_requests | 通过连接发出的当前请求数(1.3.8,1.2.5) |
| $content_length | “Content-Length”请求头字段 |
| $content_type | “Content-Type”请求头字段 |
| $cookie_name | 名称cookie |
| $document_root | root或alias伪指令的值 |
| $document_uri | 与$uri相同 |
| $host | 按此优先顺序:请求行中的主机名,或“Host”请求头字段中的主机名,或匹配请求的服务器名称 |
| $hostname | host name |
| $http_name | 任意请求头字段; 变量名的最后一部分是字段名称转换为小写字母,破折号用下划线替换 |
| $https | “on”如果连接在SSL模式下运行,否则为空字符串 |
| $is_args | “?”如果请求行有参数,否则为空字符串 |
| $limit_rate | 设置此变量启用响应速率限制; 请参阅limit_rate |
| $msec | 当前时间(以秒为单位)与毫秒分辨率(1.3.9,1.2.6) |
| $nginx_version | nginx version |
| $pid | PID of the worker process |
| $pipe | “p”如果请求是流水线的,“.”否则(1.3.12,1.2.7) |
| $proxy_protocol_addr | 客户端地址从PROXY协议header,否则为空字符串(1.5.12)必须先通过在listen指令中设置proxy_protocol参数来启用PROXY协议。 |
| $proxy_protocol_port | 客户端端口从PROXY协议头,否则为空字符串(1.11.0)必须先通过在listen指令中设置proxy_protocol参数来启用PROXY协议。 |
| $query_string | same as $args |
| $realpath_root | 对应于当前请求的根或别名指令的值的绝对路径名,所有符号链接解析为实际路径 |
| $remote_addr | client address |
| $remote_port | client port |
| $remote_user | 用户名提供基本认证 |
| $request | full original request line |
| $request_body | 请求正文,当请求主体被读取到内存缓冲区时,变量的值在proxy_pass,fastcgi_pass,uwsgi_pass和scgi_pass指令处理的位置可用。 |
| $request_body_file | 具有请求正文的临时文件的名称。在处理结束时,需要删除文件。 要始终将请求体写入文件,需要启用client_body_in_file_only。 当在代理请求中或在向FastCGI / uwsgi / SCGI服务器的请求中传递临时文件的名称时,分别通过proxy_pass_request_body off,fastcgi_pass_request_body off,uwsgi_pass_request_body off或scgi_pass_request_body off指令禁用传递请求主体 。 |
| $request_completion | 如果请求已完成,则返回“OK”,否则返回空字符串 |
| $request_filename | 文件路径,基于根或别名指令,以及请求URI |
| $request_id | 从16个随机字节生成的唯一请求标识符,以十六进制(1.11.0) |
| $request_length | 请求长度(包括请求行,头和请求体)(1.3.12,1.2.7) |
| $request_method | 请求方法,通常是“GET”或“POST” |
| $request_time | 请求处理时间(以秒为单位),毫秒分辨率(1.3.9,1.2.6); 从客户端读取第一个字节以来经过的时间 |
| $request_uri | 完整原始请求URI(带参数) |
| $scheme | 请求方案,“http”或“https” |
| $sent_http_name | 任意响应头字段; 变量名的最后一部分是字段名称转换为小写字母,破折号用下划线替换 |
| $server_addr | 接受请求的服务器的地址,计算此变量的值通常需要一次系统调用。 为了避免系统调用,listen指令必须指定地址并使用bind参数。 |
| $server_name | 接受请求的服务器的名称 |
| $server_port | 接受请求的服务器端口 |
| $server_protocol | 请求协议,通常是“HTTP / 1.0”,“HTTP / 1.1”或“HTTP / 2.0” |
| $status | response status (1.3.2, 1.2.2) |
| $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space | 有关客户端TCP连接的信息; 在支持TCP_INFO套接字选项的系统上可用 |
| $time_iso8601 | ISO 8601标准格式的本地时间(1.3.12,1.2.7) |
| $time_local | 公共日志格式中的本地时间(1.3.12,1.2.7) |
| $uri | 请求中的当前URI,规范化。$uri的值可以在请求处理期间改变,例如。 当进行内部重定向时,或当使用索引文件时。 |
#ngx_http_fastcgi_module
ngx_http_fastcgi_module模块支持嵌入式变量,可以使用fastcgi_param指令设置参数:
$fastcgi_script_name
请求URI,或者如果URI以斜杠结尾,请求URI带有由附加的fastcgi_index指令配置的索引文件名。 此变量可用于设置在PHP中确定脚本名称的SCRIPT_FILENAME和PATH_TRANSLATED参数。 例如,对于带有以下指令的“/ info /”请求
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
SCRIPT_FILENAME参数将等于“/home/www/scripts/php/info/index.php”。
当使用fastcgi_split_path_info指令时,$fastcgi_script_name变量等于指令的第一个捕获集的值。
$fastcgi_path_info
第二个捕获的值由fastcgi_split_path_info指令设置。 此变量可用于设置PATH_INFO参数。
ngx_http_gzip_module
$gzip_ratio
实现的压缩比,计算为原始和压缩响应大小之间的比率。
ngx_http_memcached_module
$memcached_key
定义用于从memcached服务器获取响应的键。
ngx_http_proxy_module
ngx_http_proxy_module模块支持嵌入式变量,可以使用proxy_set_header指令来组成头文件:
$proxy_host
proxy_pass指令中指定的代理服务器的名称和端口;
$proxy_port
proxy_pass指令中指定的代理服务器的端口或协议的默认端口;
$proxy_add_x_forwarded_for
“X-Forwarded-For”客户端请求头字段,其中附加了$ remote_addr变量,用逗号分隔。 如果客户请求头中没有“X-Forwarded-For”字段,$proxy_add_x_forwarded_for变量等于$remote_addr变量。
ngx_http_realip_module
$realip_remote_addr
保留原始客户端地址(1.9.7)
$realip_remote_port
保留原始客户端端口(1.11.0)
ngx_http_referer_module
$invalid_referer
空字符串,如果“Referer”请求头字段值被视为有效,否则为“1”。
ngx_http_secure_link_module
$secure_link
链接检查的状态。 具体值取决于所选的操作模式。
$secure_link_expires
请求中传递的链接的生存期; 意图仅在secure_link_md5指令中使用。
ngx_http_slice_module
$slice_range
当前切片范围以HTTP字节范围格式,例如,bytes = 0-1048575。
ngx_http_ssl_module
$ssl_cipher
返回用于已建立的SSL连接的密码字符串;
$ssl_ciphers
返回客户端支持的密码列表(1.11.7)。 已知密码以名称列出,未知以十六进制显示,例如:
AES128-SHA:AES256-SHA:0x00ff
仅当使用OpenSSL版本1.0.2或更高版本时,才完全支持该变量。 对于较旧版本,此变量仅可用于新会话,并仅列出已知密码。
$ssl_client_cert
以已建立的SSL连接的PEM格式返回客户端证书,每行除了第一个前面带有制表符字符; 这是为了在proxy_set_header指令中使用;
$ssl_client_fingerprint
返回已建立的SSL连接的客户端证书的SHA1指纹(1.7.1);
$ssl_client_i_dn
根据RFC 2253(1.11.6)返回已建立的SSL连接的客户端证书的“issuer DN”字符串;
$ssl_client_i_dn_legacy
返回已建立的SSL连接的客户端证书的“issuer DN”字符串;
在1.11.6版之前,变量名是$ ssl_client_i_dn。
$ssl_client_raw_cert
以已建立的SSL连接的PEM格式返回客户端证书;
$ssl_client_s_dn
根据RFC 2253(1.11.6)返回已建立的SSL连接的客户端证书的“subject DN”字符串;
$ssl_client_s_dn_legacy
返回已建立的SSL连接的客户端证书的“subject DN”字符串;
在1.11.6版之前,变量名是$ ssl_client_s_dn。
$ssl_client_serial
返回已建立的SSL连接的客户端证书的序列号;
$ssl_client_v_end
返回客户端证书的结束日期(1.11.7);
$ssl_client_v_remain
返回客户端证书到期的天数(1.11.7);
$ssl_client_v_start
返回客户端证书的开始日期(1.11.7);
$ssl_client_verify
返回客户端证书验证的结果:“SUCCESS”,“FAILED:reason”和“NONE”(如果证书不存在);
在1.11.7版之前,“FAILED”结果不包含原因字符串。
$ssl_curves
返回客户端支持的曲线列表(1.11.7)。 已知的曲线以名称列出,未知的以十六进制显示,例如:
0x001d:prime256v1:secp521r1:secp384r1
仅当使用OpenSSL版本1.0.2或更高版本时,才支持该变量。 对于旧版本,变量值将是一个空字符串。
该变量仅适用于新会话。
$ssl_protocol
返回已建立的SSL连接的协议;
$ssl_server_name
返回通过SNI请求的服务器名称(1.7.0);
$ssl_session_id
返回已建立的SSL连接的会话标识;
$ssl_session_reused
如果SSL会话被重用,则返回“r”,否则返回“。”,否则返回(1.5.11)。
ngx_http_stub_status_module
$connections_active
与活动连接值相同;
$connections_reading
与读数值相同;
$connections_writing
与写入值相同;
$connections_waiting
与等待值相同。
ngx_http_upstream_module
$upstream_addr
保留IP地址和端口或上游服务器的UNIX域套接字的路径。 如果在请求处理期间联系了多个服务器,则它们的地址由逗号分隔,例如。 “192.168.1.1:80,192.168.1.2:80,unix:/ tmp / sock”。 如果由“X-Accel-Redirect”或error_page发起的从一个服务器组到另一个服务器组的内部重定向发生,则来自不同组的服务器地址由冒号分隔。 “192.168.1.1:80,192.168.1.2:80,unix:/ tmp / sock:192.168.10.1:80,192.168.10.2:80”。
$upstream_bytes_received
从上游服务器接收的字节数(1.11.4)。 来自多个连接的值由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_cache_status
保持访问响应缓存的状态(0.8.3)。 状态可以是“MISS”,“BYPASS”,“EXPIRED”,“STALE”,“UPDATING”,“REVALIDATED”或“HIT”。
$upstream_connect_time
保持与上游服务器建立连接的时间(1.9.1); 时间以秒为单位,以毫秒为单位。 在SSL的情况下,包括在握手上花费的时间。 几个连接的时间由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_cookie_name
具有由上游服务器在“Set-Cookie”响应头字段(1.7.1)中发送的指定名称的cookie。 仅保存来自最后一个服务器的响应的cookie。
$upstream_header_time
保持从上游服务器接收响应头的时间(1.7.10); 时间以秒为单位,以毫秒为单位。 几个响应的时间由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_http_name
保留服务器响应头字段。 例如,“Server”响应头字段可通过$ upstream_http_server变量使用。 将头字段名转换为变量名的规则与以“$ http_”开头的变量相同。 只有来自最后一个服务器的响应的头字段被保存。
$upstream_response_length
保持从上游服务器获得的响应的长度(0.7.27); 长度以字节为单位。 几个响应的长度由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_response_time
保持接收来自上游服务器的响应所花费的时间; 时间以秒为单位,以毫秒为单位。 几个响应的时间由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_status
保存从上游服务器获得的响应的状态码。 多个响应的状态代码由逗号和冒号分隔,如$ upstream_addr变量中的地址。
ngx_http_userid_module
$uid_got
Cookie名称和收到的客户标识符。
$uid_reset
如果变量设置为不为“0”的非空字符串,则客户机标识符将重置。 特殊值“log”另外导致关于重置标识符的消息输出到error_log。
$uid_set
Cookie名称和已发送的客户端标识符。
Nginx变量.md的更多相关文章
- Nginx变量的实现机制
Nginx有两种定义变量的方式,一种是在配置文件中使用set指令(由rewrite模块提供支持),另一种是在模块内定义变量. 变量相关结构体: struct ngx_http_variable_s { ...
- 关于NGINX变量的一些测试结果
作为NGINX变量,不像正规语言那么正式. 但处理自定义和内部变量时,这些操作,也是少不了的. geo $dollar { default "$"; } server { list ...
- Nginx 变量漫谈(八)
与 $arg_XXX 类似,我们在 (二) 中提到过的内建变量 $cookie_XXX 变量也会在名为 XXX 的 cookie 不存在时返回特殊值“没找到”: location /test ...
- Nginx 变量漫谈(七)
在 (一) 中我们提到过,Nginx 变量的值只有一种类型,那就是字符串,但是变量也有可能压根就不存在有意义的值.没有值的变量也有两种特殊的值:一种是“不合法”(invalid),另一种是“没找到”( ...
- Nginx 变量漫谈(五)
前面在 (二) 中我们已经了解到变量值容器的生命期是与请求绑定的,但是我当时有意避开了“请求”的正式定义.大家应当一直默认这里的“请求”都是指客户端发起的 HTTP 请求.其实在 Nginx 世界里有 ...
- Nginx 变量漫谈(四)
在设置了“取处理程序”的情况下,Nginx 变量也可以选择将其值容器用作缓存,这样在多次读取变量的时候,就只需要调用“取处理程序”计算一次.我们下面就来看一个这样的例子: map $args ...
- Nginx 变量漫谈(三)
也有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话 ),而在赋值时可以直接修改参数串.我们来看一个 ...
- Nginx 变量漫谈(二)
关于 Nginx 变量的另一个常见误区是认为变量容器的生命期,是与 location 配置块绑定的.其实不然.我们来看一个涉及“内部跳转”的例子: server { listen ...
- Nginx 变量漫谈(一)
Nginx 的配置文件使用的就是一门微型的编程语言,许多真实世界里的 Nginx 配置文件其实就是一个一个的小程序.当然,是不是“图灵完全的”暂且不论,至少据我观察,它在设计上受 Perl 和 Bou ...
随机推荐
- mac系统终端sudo免输入密码技能get
1.需要在/etc/sudoers中配置. 这个文件的权限是r/r/n,配置之前需要加写权限. sudo chmod u-w /etc/sudoers 2.打开命令窗口sudo visudo 或者 s ...
- Resharper 使用帮助-自动生成文件头
VS2012 安装完resharper 后,在resharper选项中选择 Code Editing – File Header Text . 输入自定义的文件头格式.如果需要在文件头外层添加regi ...
- 自己写一个java的mvc框架吧(一)
自己写一个mvc框架吧(一) 目录 自己写一个mvc框架吧(一) 自己写一个mvc框架吧(二) 自己写一个mvc框架吧(三) 自己写一个mvc框架吧(四) 写之前的一些废话 废话 1 (总是要先随便说 ...
- Mybatis源代码分析之parsing包
parsing,从字面上理解就是编译解析的意思,那么这个包中的内容就应该和mybatis配置文件的编译解析有关系.本文首先会按照引用层次来分别介绍这个包中各个类的作用,而后再用实际的例子解释它们是如何 ...
- Centos7宽带连接
网上大多教程都是虚拟机上实现宽带连接的,但是实际有差别 装完系统最头疼的就是宽带连接 转自:centos创建宽带连接-EnchanterBlue-ChinaUnix博客 http://blog.chi ...
- Java程序中的死锁
什么是死锁? 死锁是一种特定的程序状态,主要是由于循环依赖导致彼此一直处于等待中,而使得程序陷入僵局,相当尴尬.死锁不仅仅发生在线程之间,而对于资源独占的进程之间同样可能出现死锁.通常来说,我们所说的 ...
- 分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC (转载 不错)
分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC 1 一致性 1.1 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 假设一个具有N个节点的分布式系统,当 ...
- 【学习笔记】--- 老男孩学Python,day12 函数名的应用,闭包,迭代器
1, 函数名的应用,第一类对象 函数名可以像变量一样进行使用 1.赋值 def func(): print("你吃了么?") # print(func) # a = func # ...
- 前台提交数据(表单数据、Json数据及上传文件)的类型
MIME (Multipurpose Internet Mail Extensions) 是描述内容类型的互联网标准.Clients use this content type or media ty ...
- WPF ListView ListBox 常用的样式记录
ListView: <ListView x:Name="lvBlockedApps" ItemsSource="{Binding BlockedAppsCollec ...