Nginx - HTTP Configuration, Module Variables
The HTTP Core module introduces a large set of variables that you can use within the value of directives. Be careful though, as only a handful of directives accept variables in the definition of their value. If you insert a variable in the value of a directive that does not accept variables, no error is reported; instead the variable name appears as raw text.
There are three different kinds of variables that you will come across. The first set represents the values transmitted in the headers of the client request. The second set corresponds to the headers of the response sent to the client. Finally, the third set comprises variables that are completely generated by Nginx.
Request Headers
Nginx lets you access the client request headers under the form of variables that you will be able to employ later on in the configuration:
| Variable | Description |
| $http_host | Value of the Host HTTP header, a string indicating the hostname that the client is trying to reach. |
| $http_user_agent | Value of the User-Agent HTTP header, a string indicating the web browser of the client. |
| $http_referer | Value of the Referer HTTP header, a string indicating the URL of the previous page from which the client comes. |
| $http_via | Value of the Via HTTP header, which informs us about possible proxies used by the client. |
| $http_x_forwarded_for | Value of the X-Forwarded-For HTTP header, which shows the actual IP address of the client if the client is behind a proxy. |
| $http_cookie | Value of the Cookie HTTP header, which contains the cookie data sent by the client. |
| $http_... | Additional headers sent by the client can be retrieved using $http_ followed by the header name in lowercase and with dashes (-) replaced by underscores (_). |
Response headers
In a similar fashion, you are allowed to access the HTTP headers of the response that was sent to the client. These variables are not available at all times — they will only carry a value after the response is sent, for instance, at the time of writing messages in the logs.
| Variable | Description |
| $sent_http_content_type | Value of the Content-Type HTTP header, indicating the MIME type of the resource being transmitted. |
| $sent_http_content_length | Value of the Content-Length HTTP header informing the client of the response body length. |
| $sent_http_location | Value of the Location HTTP header, which indicates that the location of the desired resource is different than the one specified in the original request. |
| $sent_http_last_modified | Value of the Last-Modified HTTP header corresponding to the modification date of the requested resource. |
| $sent_http_connection | Value of the Connection HTTP header, defining whether the connection will be kept alive or closed. |
| $sent_http_keep_alive | Value of the Keep-Alive HTTP header that defines the amount of time a connection will be kept alive. |
| $sent_http_transfer_encoding | Value of the Transfer-Encoding HTTP header, giving information about the response body encoding method (such as compress, gzip). |
| $sent_http_cache_control | Value of the Cache-Control HTTP header, telling us whether the client browser should cache the resource or not. |
| $sent_http_... | Additional headers sent to the client can be retrieved using $sent_http_ followed by the header name, in lowercase and with dashes (-) replaced by underscores (_). |
Nginx Generated
Apart from the HTTP headers, Nginx provides a large amount of variables concerning the request, the way it was and will be handled, as well as settings in use with the current configuration.
| Variable | Description |
| $arg_XXX | Allows you to access the query string (GET parameters), where XXX is the name of the parameter you want to utilize. |
| $args | All of the arguments of the query string combined together. |
| $binary_remote_addr | IP address of the client as binary data (4 bytes). |
| $body_bytes_sent | Amount of bytes sent in the body of the response. |
| $connection_requests | Amount of requests already served by the current connection. |
| $content_length | Equates to the Content-Length HTTP header. |
| $content_type | Equates to the Content-Type HTTP header. |
| $cookie_XXX | Allows you to access cookie data where XXX is the name of the parameter you want to utilize. |
| $document_root | Returns the value of the root directive for the current request. |
| $document_uri | Returns the current URI of the request. It may differ from the original request URI if internal redirects were performed. It is identical to the $uri variable. |
| $host | This variable equates to the Host HTTP header of the request. Nginx itself gives this variable a value for cases where the Host header is not provided in the original request. |
| $hostname | Returns the system hostname of the server computer |
| $https | Set to on for HTTPS connections, empty otherwise. |
| $is_args | If the $args variable is defined, $is_args equates to ?. If $args is empty, $is_args is empty as well. You may use this variable for constructing an URI that optionally comes with a query string, such as index.php$is_args$args. If there is any query string argument in the request, $is_args is set to ?, making this a valid URI. |
| $limit_rate |
Returns the per-connection transfer rate limit, as defined by the limit_rate directive. You are allowed to edit this variable by using set (directive from the Rewrite Module): set $limit_rate 128k; |
| $nginx_version | Returns the version of Nginx you are running. |
| $pid | Returns the Nginx process identifier. |
| $query_string | Identical to $args. |
| $remote_addr | Returns the IP address of the client. |
| $remote_port | Returns the port of the client socket. |
| $remote_user | Returns the client username if they used authentication. |
| $realpath_root | Returns the document root in the client request, with symbolic links resolved into the actual path. |
| $request_body | Returns the body of the client request, or - if the body is empty. |
| $request_body_file | If the request body was saved (see the client_body_in_file_only directive) this variable indicates the path of the temporary file. |
| $request_completion | Returns OK if the request is completed, an empty string otherwise. |
| $request_filename | Returns the full filename served in the current request. |
| $request_method | Indicates the HTTP method used in the request, such as GET or POST. |
| $request_uri | Corresponds to the original URI of the request, remains unmodified all along the process (unlike $document_uri/$uri). |
| $scheme | Returns either http or https, depending on the request. |
| $server_addr | Returns the IP address of the server. Be aware as each use of the variable requires a system call, which could potentially affect overall performance in the case of high-traffic setups. |
| $server_name | Indicates the value of the server_name directive that was used while processing the request. |
| $server_port | Indicates the port of the server socket that received the request data. |
| $server_protocol | Returns the protocol and version, usually HTTP/1.0 or HTTP/1.1. |
|
$tcpinfo_rtt, |
If your operating system supports the TCP_INFO socket option, these variables will be populated with information on the |
|
$time_iso8601, |
Provides the current time respectively in ISO 8601 and local formats for use with the access_log directive. |
| $uri | Identical to $document_uri. |
Nginx - HTTP Configuration, Module Variables的更多相关文章
- Nginx - HTTP Configuration, Module Directives
Socket and Host Configuration This set of directives will allow you to configure your virtual hosts. ...
- Nginx之旅系列 - Nginx的configuration
题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx的configuration 今天对 ...
- - configuration.module has an unknown property 'loader' 问题解决
错误提示: Invalid configuration object. Webpack has been initialised using a configuration object that d ...
- Nginx - HTTP Configuration, the Location Block
Nginx offers you the possibility to fine-tune your configuration down to three levels — at the proto ...
- nginx install lua module
#install luajit #http://luajit.org/download.html .tar.gz cd LuaJIT- make install PREFIX=/home/allen. ...
- Test,Nginx Hello World Module
ngx_addon_name=ngx_http_mytest_module HTTP_MODULES="$HTTP_MODULES ngx_http_mytest_module" ...
- Nginx - Configuration File Syntax
Configuration Directives The Nginx configuration file can be described as a list of directives organ ...
- Nginx - Rewrite Module
Initially, the purpose of this module (as the name suggests) is to perform URL rewriting. This mecha ...
- nginx tcp负载均衡 (Module ngx_stream_upstream_module)
Example ConfigurationDirectives upstream server zone state hash least_conn ...
随机推荐
- Mysql知识要点总结
1.安装 要点:记得更改字符集 2.数据类型 常用数据类型:INT VARCHAR BLOG 3.操作数据库 SHOW DATABASES; CREATE DATABASE 名称; DROP DATA ...
- PAC(Proxy Auto Config)代理自动配置文件的编写
Proxy Auto Config文件格式说明 PAC文件实际上是一个Script, 通过PAC我们可以让系统根据情况判断使用哪一个Proxy来访问目标网址, 这样做的好处: 分散Proxy的流量,避 ...
- SQL Server中如何获取当前年,月,日,时,分,秒
分类: SQL Server select GETDATE() as '当前日期',DateName(year,GetDate()) as '年',DateName(month,GetDate()) ...
- python的locals()妙用
如果你是个喜欢偷懒的程序员并想让代码看起来更加简明,可以利用 Python 的内建函数 locals() .它返回的字典对所有局部变量的名称与值进行映射.因此,前面的视图可以重写成下面这个样子:def ...
- MKMapView的内存释放问题
MKMapView的内存释放问题 by 伍雪颖 - (void)dealloc { self.mapView.showsUserLocation = NO; self.mapView.userTrac ...
- lucene_indexWriter说明、索引库优化
IndexWriter Hibernate的SessionFactory 在Hibernate中.一般保持一个数据库就仅仅有一个SessionFactory.由于在SessionFactory中维护二 ...
- Ubuntu开机时出现"没有正确安装GNOME电源管理器的默认配置
1:在登录界面.按Ctrl+Alt+F1,进入控制台命令行模式 2:先输入username,回车,然后输入password,登录成功 3:输入df -h,这个命令是查看硬盘空间的.能够看一下.你的ho ...
- mybatis0209 二级缓存
.1二级缓存 1.1.1原理 mybatis和spring整合后一级缓存就没有了,sqlSession在不关闭的前提下2次查询就会从缓存中取,一级缓存缓存在sqlSession对象里面,当多用户查询的 ...
- 关于dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的分发机制浅析
虽说这个问题不是很难...动动手就能看出答案...但是似乎不太容易理解...几次尝试把这个问题说明白....但是好像感觉说不明白....(顿时想起了那句话----说不明白就是自己还不明白! 我怎么可能 ...
- c#_表单处理方式
阅读目录 开始 简单的表单,简单的处理方式 表单提交,成功控件 多提交按钮的表单 上传文件的表单 MVC Controller中多个自定义类型的传入参数 F5刷新问题并不是WebForms的错 以Aj ...