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 ...
随机推荐
- 手机端 : js设置table内容 加载更多,并头部锁定悬浮
<script src="js/jquery.min.js" type="text/javascript"></script> < ...
- .NET编译过程
总结一下.NET的编译过程, 一般的高级编程语言会把代码编译成机器码,也就是我们说的非托管代码,执行在编译它的电脑上. 而.NET编译代码的时候会把高级编程语言编译成中间语言 运行在CLR(公共语言运 ...
- MySQL 学习 --- 数据结构和索引
本文参考了多篇文章集成的笔记,希望各位学习之前可以阅读以下参考资料先 概述 文章分几个部分 :第一部分介绍了B-Tree 和 B+Tree 这种数据结构作为索引:第二部分介绍索引的最左前缀原则和覆盖索 ...
- [日常] MySQL的预处理技术测试
MySQL预处理技术:1.减轻服务器压力2.防止sql注入,把传递过去的危险字符也只当做参数处理3.将sql语句强制一分为二:第一部分为前面相同的命令和结构部分,第二部分为后面可变的数据部分基本使用 ...
- JDBC使用DBUtils
1.commons-dbutils commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jd ...
- mybatis-plus之Mapper CRUD接口和 Service CRUD 接口
中文官网链接: https://mp.baomidou.com/guide/crud-interface.html
- win10 安装oracle 11gR2_database出现universal Installer后闪退就没反应的解决方案
前言:本机为 win 10 64位系统,安装oracle win64_11gR2_database的时候出现问题,安装不了,经排查解决了此问题.转载请注明出处:https://www.cnblogs. ...
- 设计模式学习——抽象工厂模式(Abstract Factory Pattern)
现有一批装备(产品),分为不同的部位(上装.下装)与不同的等级(lv1.lv2).又有不同lv的工厂,只生产对应lv的全套装备. 代码实现上...本次写得比较偷懒,函数实现都写在头文件了.... 有些 ...
- autofac初识
在开始autofac时,有必要先了解两个关键词:“控制反转(IoC/Inverse Of Control)”与“依赖注入(DI/Dependence injection)”. 控制反转(IoC):它把 ...
- nginx正确服务react-router应用
如今React应用普遍使用react-router作为路由管理,在开发端webpack自带的express服务器下运行和测试表现均正常,部署到线上的nginx服务器后,还需要对该应用在nginx的配置 ...