nginx一些内置的变量
core module 支持一些内置的变量,与apache使用的变量相一致。
首先,一些变量代表了客户端请求头部的一些字段,如:$http_user_agent, $http_cookie等等。注
意,由于这些变量会在请求中定义,所以可能无法保证他们是存在的或者说可以定义到一些别的
地方(例如遵循一定的规范)。
除此之外,下列是一些其他变量:
$arg_PARAMETER
这个变量包含在查询字符串时GET请求PARAMETER的值。
$args
这个变量等于请求行中的参数。
$binary_remote_addr
二进制码形式的客户端地址。
$body_bytes_sent
传送页面的字节数
$content_length
请求头中的Content-length字段。
$content_type
请求头中的Content-Type字段。
$cookie_COOKIE
cookie COOKIE的值。
$document_root
当前请求在root指令中指定的值。
$document_uri
与$uri相同。
$host
请求中的主机头字段,如果请求中的主机头不可用,则为服务器处理请求的服务器名称。
$is_args
如果$args设置,值为"?",否则为""。
$limit_rate
这个变量可以限制连接速率。
$nginx_version
当前运行的nginx版本号。
$query_string
与$args相同。
$remote_addr
客户端的IP地址。
$remote_port
客户端的端口。
$remote_user
已经经过Auth Basic Module验证的用户名。
$request_filename
当前连接请求的文件路径,由root或alias指令与URI请求生成。
$request_body
这个变量(0.7.58+)包含请求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比较有
意义。
$request_body_file
客户端请求主体信息的临时文件名。
$request_completion
未知。
$request_method
这个变量是客户端请求的动作,通常为GET或POST。
包括0.8.20及之前的版本中,这个变量总为main request中的动作,如果当前请求是一个子请求,并
不使用这个当前请求的动作。
$request_uri
这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI。
$scheme
HTTP方法(如http,https)。按需使用,例:
rewrite ^(.+)$ $scheme://example.com$1 redirect;
$server_addr
服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指
定地址并且使用bind参数。
$server_name
服务器名称。
$server_port
请求到达服务器的端口号。
$server_protocol
请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$uri
请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它
可以通过内部重定向,或者使用index指令进行修改。
首先,一些变量代表了客户端请求头部的一些字段,如:$http_user_agent, $http_cookie等等。注
意,由于这些变量会在请求中定义,所以可能无法保证他们是存在的或者说可以定义到一些别的
地方(例如遵循一定的规范)。
除此之外,下列是一些其他变量:
$arg_PARAMETER
这个变量包含在查询字符串时GET请求PARAMETER的值。
$args
这个变量等于请求行中的参数。
$binary_remote_addr
二进制码形式的客户端地址。
$body_bytes_sent
传送页面的字节数
$content_length
请求头中的Content-length字段。
$content_type
请求头中的Content-Type字段。
$cookie_COOKIE
cookie COOKIE的值。
$document_root
当前请求在root指令中指定的值。
$document_uri
与$uri相同。
$host
请求中的主机头字段,如果请求中的主机头不可用,则为服务器处理请求的服务器名称。
$is_args
如果$args设置,值为"?",否则为""。
$limit_rate
这个变量可以限制连接速率。
$nginx_version
当前运行的nginx版本号。
$query_string
与$args相同。
$remote_addr
客户端的IP地址。
$remote_port
客户端的端口。
$remote_user
已经经过Auth Basic Module验证的用户名。
$request_filename
当前连接请求的文件路径,由root或alias指令与URI请求生成。
$request_body
这个变量(0.7.58+)包含请求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比较有
意义。
$request_body_file
客户端请求主体信息的临时文件名。
$request_completion
未知。
$request_method
这个变量是客户端请求的动作,通常为GET或POST。
包括0.8.20及之前的版本中,这个变量总为main request中的动作,如果当前请求是一个子请求,并
不使用这个当前请求的动作。
$request_uri
这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI。
$scheme
HTTP方法(如http,https)。按需使用,例:
rewrite ^(.+)$ $scheme://example.com$1 redirect;
$server_addr
服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指
定地址并且使用bind参数。
$server_name
服务器名称。
$server_port
请求到达服务器的端口号。
$server_protocol
请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$uri
请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它
可以通过内部重定向,或者使用index指令进行修改。
另外:
HTTP_X_FORWARDED_FOR是透过代理服务器取得客户端的真实IP地址,有些用此方法读取到的仍然是代理服务器的IP。还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 HTTP_X_FORWARDED_FOR 取到的值将是空的。
相关推荐
nginx内置变量列表,根据 Nginx 源码文件 ngx_http_variables.c 提取了nginx 的内置变量。
**Nginx内置变量概述** Nginx是一个高性能的HTTP和反向代理服务器,它具有模块化设计和出色的并发处理能力。在Nginx配置中,内置变量扮演着至关重要的角色,它们允许管理员动态地获取关于请求、客户端、服务器状态...
Nginx 内置预变量都有哪些?
1,nginx内置变量 nginx 有很多内置变量可以进行简单的过滤。 $arg_name 请求行中的name参数。 $args 请求行中参数字符串。 $cookie_name 名为name的cookie。 与$uri相同。 $http_name 任意请求头的值;变量名的后...
这些内置变量极大地扩展了Nginx配置的灵活性,允许开发者根据HTTP请求的具体情况做出相应的响应。 综上所述,Nginx的自定义变量和内置预定义变量提供了强大的配置能力,使Nginx成为了一个高度可定制的Web服务器和...
经常需要配置Nginx ,其中有许多以 $ 开头的变量,经常需要查阅nginx 所支持的变量。 可能是对 Ngixn资源不熟悉,干脆就直接读源码,分析出支持的变量。 Nginx支持的http变量实现在 ngx_http_variables.c 的 ngx_...
nginx内置变量 内置变量存放在 ngx_http_core_module 模块中,变量的命名方式和apache 服务器变量是一致的。总而言之,这些变量代表着客户端请求头的内容,例如$http_user_agent, $http_cookie, 等等。下面是nginx...
以下是一些关键的 ngx_lua 内置指令及其说明: - **lua_use_default_type:** - 控制是否使用 `default_type` 指令定义的 Content-Type 默认值。这对于定制化响应类型非常有用。 - **lua_code_cache:** - 控制 ...
在“Nginx变量漫谈”中,将会探讨Nginx的内置变量以及变量的使用场景,这对于编写高级配置非常有用。 此外,Nginx的if指令虽然在某些情况下可用,但使用不当可能会导致意外的行为。因此,“Nginx的if是邪恶的”这个...
Nginx 提供了多种内置变量,同时支持自定义变量。内置变量通常用于获取特定的信息,例如请求头、请求 URI 等;自定义变量则允许用户根据需要创建和设置。 **内置变量示例**: - `$request_uri`:表示请求的 URI。 -...
- **内置变量与自定义变量**:比较内置变量与用户自定义变量的区别。 - **变量与HTTP请求处理**:探讨变量如何参与HTTP请求的处理流程。 - **变量与安全性**:分析变量使用不当可能带来的安全风险。 #### Nginx ...
为提高静态资源的访问速度,Nginx提供内置缓存功能。1.24.0版本优化了缓存控制,允许更精细地控制何时更新缓存内容。 7. **日志记录与分析** Nginx的日志模块可以帮助管理员收集和分析访问日志,监控服务器性能和...
利用Nginx的内置功能尽可能减少Lua的使用。 3. **错误调试**:使用`ngx.log`记录错误信息,结合Nginx的日志查看和分析。 4. **版本控制**:随着项目发展,确保Lua代码版本控制,便于维护和升级。 通过深入理解...
Nginx的一些特性包括作为反向代理服务器和L7负载均衡器,它还内置了Perl解释器,支持动态二进制升级,能够重写URL并拥有良好的PCRE(Perl兼容正则表达式)支持。与Apache相比,Nginx在处理静态文件、高并发连接以及...
3. **动态变量**:讲解了如何利用Nginx的内置机制来创建动态变量,例如通过HTTP请求头获取信息。 4. **变量间的相互引用**:阐述了变量如何相互引用,以及这种引用可能导致的问题和解决方案。 5. **变量的拼接**:...
5. **变量与函数**:某些Nginx模块还提供了内置函数来处理变量,例如`map`指令可以用来转换变量值。 #### 二、Nginx配置指令的执行顺序 1. **配置结构**:Nginx的配置文件是由一系列嵌套的块构成的,每个块可以...
4. **缓存**:Nginx内置缓存功能,能够缓存部分请求的结果,减少对后端服务器的压力。 **二、 ngx_rtmp模块** ngx_rtmp是Nginx的一个扩展模块,专门用于处理实时流媒体协议(RTMP)。它提供了以下功能: 1. **...