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,
 $tcpinfo_rttvar,
 $tcpinfo_snd_cwnd,
 $tcpinfo_rcv_space

If your operating system supports the TCP_INFO socket option, these variables will be populated with information on the
current client TCP connection.

$time_iso8601,
 $time_local

 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的更多相关文章

  1. Nginx - HTTP Configuration, Module Directives

    Socket and Host Configuration This set of directives will allow you to configure your virtual hosts. ...

  2. Nginx之旅系列 - Nginx的configuration

    题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx的configuration 今天对 ...

  3. - configuration.module has an unknown property 'loader' 问题解决

    错误提示: Invalid configuration object. Webpack has been initialised using a configuration object that d ...

  4. Nginx - HTTP Configuration, the Location Block

    Nginx offers you the possibility to fine-tune your configuration down to three levels — at the proto ...

  5. nginx install lua module

    #install luajit #http://luajit.org/download.html .tar.gz cd LuaJIT- make install PREFIX=/home/allen. ...

  6. Test,Nginx Hello World Module

    ngx_addon_name=ngx_http_mytest_module HTTP_MODULES="$HTTP_MODULES ngx_http_mytest_module" ...

  7. Nginx - Configuration File Syntax

    Configuration Directives The Nginx configuration file can be described as a list of directives organ ...

  8. Nginx - Rewrite Module

    Initially, the purpose of this module (as the name suggests) is to perform URL rewriting. This mecha ...

  9. nginx tcp负载均衡 (Module ngx_stream_upstream_module)

    Example ConfigurationDirectives     upstream     server     zone     state     hash     least_conn   ...

随机推荐

  1. const修饰的双重指针赋值解惑

    在c程序中,我们可能经常会使用到指针之间的赋值. 传统的赋值操作: char *cp = "c"; const char *ccp; ccp = cp; printf(" ...

  2. android ipc通信机制之之三,进程通讯方式。

    IPC通讯方式的优缺点: IPC通讯方式的对比 名称 优点 缺点 适用场景 Bundle 简单易用 只能传输Bundle支持的数据类型 四大组件的进程通信 文件共享 简单易用 不适合高并发场景,并无法 ...

  3. 为joomla加入下拉菜单的方法

    用 Joomla! 建站的大多数站长都须要在站点前台使用下拉菜单(dropdown menu),或者叫弹出菜单(slide menu),由于这样能够在有限的页面空间上公布很多其它的导航菜单,而且能够进 ...

  4. delphi 自动滚动到最底端scroll

    自动滚动到最底端scrollUses MSHTML;{$R *.dfm}var  ScrollPos: integer=0;procedure TForm1.Button1Click(Sender: ...

  5. angularjs入门学习【应用剖析中篇】

    在上一节讲完了关于应用开发中如数据绑定,加入样式一类的基础操作后,接下来,将在应用中,与控制其有关的一些事件... 一.UI和控制器的分离 我们须要明白控制器在应用中的三个作用: [1]在应用模型中设 ...

  6. gdb在运行maintenance info program-spaces命令时coredump

    coredump时的信息: (gdb) maintenance info program-spaces *** Error in `gdb': free(): invalid pointer: 0x0 ...

  7. CSAPP缓冲区溢出攻击实验(上)

    CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数 ...

  8. Mac OS X 中使用SAP GUI的方法

    下载sap gui for mac 730 解压后 安装之前需要去oracle 官网下载jdk 6 然后运行 安装完成后配置登陆端 新建连接时,只需要配置Advanced 页签:勾选Expert Mo ...

  9. 错误解决:release' is unavailable: not available in automatic reference counting mode

    解决办法: You need to turn off Automatic Reference Counting. You do this by clicking on your project in ...

  10. UNIX标准化及实现之UNIX标准化、UNIX系统实现、标准和实现的关系以及ISO C标准头文件

    一.UNIX标准化 1.ISO C (International Organization for Standardization) 2.IEEE POSIX (Institue of Electri ...