Mercurial > hg > nginx-site
changeset 281:7142ddd2764c
Translated current version of ngx_http_proxy_module documentation into English.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Tue, 27 Dec 2011 11:35:46 +0000 |
parents | cbb789d3ce5e |
children | 64107bc400c4 |
files | xml/en/GNUmakefile xml/en/docs/http/ngx_http_proxy_module.xml xml/en/docs/index.xml xml/en/index.xml |
diffstat | 4 files changed, 996 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/xml/en/GNUmakefile +++ b/xml/en/GNUmakefile @@ -52,6 +52,7 @@ REFS = \ http/ngx_http_limit_req_module \ http/ngx_http_log_module \ http/ngx_http_mp4_module \ + http/ngx_http_proxy_module \ http/ngx_http_random_index_module \ REFS_XML = $(foreach name, $(REFS), xml/$(DOC_LANG)/docs/$(name).xml)
new file mode 100644 --- /dev/null +++ b/xml/en/docs/http/ngx_http_proxy_module.xml @@ -0,0 +1,988 @@ +<?xml version="1.0"?> + +<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> + +<module name="Module ngx_http_proxy_module" + link="/en/docs/http/ngx_http_proxy_module.html" + lang="en"> + +<section id="summary"> + +<para> +The <literal>ngx_http_proxy_module</literal> module allows to pass +requests to another server. +</para> + +</section> + + +<section id="example" name="Example Configuration"> + +<para> +<example> +location / { + proxy_pass http://localhost:8000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; +} +</example> +</para> + +</section> + + +<section id="directives" name="Directives"> + +<directive name="proxy_buffer_size"> +<syntax><value>size</value></syntax> +<default>4k|8k</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Sets <value>size</value> of the buffer used for reading the first part +of a response received from the proxied server. +This part usually contains a small response header. +By default, the buffer size is equal to the size of one +buffer set by the <link id="proxy_buffers"/> directive. +It can be made smaller however. +</para> + +</directive> + + +<directive name="proxy_buffering"> +<syntax><literal>on</literal> | <literal>off</literal></syntax> +<default>on</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Enables or disables buffering a response from the proxied server. +</para> + +<para> +When buffering is enabled, nginx receives a response from the proxied server +as soon as possible, saving it into buffers set by the +<link id="proxy_buffer_size"/> and <link id="proxy_buffers"/> directives. +If the whole response does not fit into memory, part of it is saved to a disk. +</para> + +<para> +When buffering is disabled, a response is passed to a client synchronously, +immediately upon receipt. +nginx will not try to read the whole response from the proxied server. +The maximum size of the data that nginx can receive from the server +at a time is set by the <link id="proxy_buffer_size"/> directive. +</para> + +</directive> + + +<directive name="proxy_buffers"> +<syntax><value>number</value> <value>size</value></syntax> +<default>8 4k|8k</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Sets the <value>number</value> and <value>size</value> of +buffers used for reading a response from the proxied server, +for a single connection. +By default, the buffer size is equal to one memory page. +This is either 4K or 8K, depending on a platform. +</para> + +</directive> + + +<directive name="proxy_cache"> +<syntax><value>zone</value> | <literal>off</literal></syntax> +<default>off</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Defines a zone used for caching. +The same zone can be used in several places. +The <literal>off</literal> parameter disables caching inherited +from the previous configuration level. +</para> + +</directive> + + +<directive name="proxy_cache_bypass"> +<syntax><value>string</value> ...</syntax> +<default/> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Defines conditions under which the answer will not be taken from a cache. +If at least one value of the string parameters is not empty and is not +equal to “0” then the answer will not be taken from the cache: +<example> +proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; +proxy_cache_bypass $http_pragma $http_authorization; +</example> +Can be used along with the <link id="proxy_no_cache"/> directive. +</para> + +</directive> + + +<directive name="proxy_cache_key"> +<syntax><value>string</value></syntax> +<default>$scheme$proxy_host$request_uri</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Defines a key for caching, for example +<example> +proxy_cache_key "$host$request_uri $cookie_user"; +</example> +By default, the directive’s value is close to the string +<example> +proxy_cache_key $scheme$proxy_host$uri$is_args$args; +</example> +</para> + +</directive> + + +<directive name="proxy_cache_min_uses"> +<syntax><value>number</value></syntax> +<default>1</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Sets the <value>number</value> of requests after which the response +will be cached. +</para> + +</directive> + + +<directive name="proxy_cache_path"> +<syntax> + <value>path</value> + [<literal>levels</literal>=<value>levels</value>] + <literal>keys_zone</literal>=<value>name</value>:<value>size</value> + [<literal>inactive</literal>=<value>time</value>] + [<literal>max_size</literal>=<value>size</value>]</syntax> +<default/> +<context>http</context> + +<para> +Sets path and other parameters of a cache. +Cache data are stored in files. +Both the key and file name in a cache are a result of +applying the MD5 function to the proxied URL. + +The <literal>levels</literal> parameter defines hierarchy levels of a cache. +For example, in the following configuration +<example> +proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; +</example> +file names in a cache will look like this: +<example> +/data/nginx/cache/<emphasis>c</emphasis>/<emphasis>29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis> +</example> +</para> + +<para> +A cached response is first written to a temporary file, then a file is renamed. +Starting from version 0.8.9 temporary files and the cache can be put on +different file systems but be aware that in this case a file is copied +across two file systems instead of the cheap rename operation. +It is thus recommended that for any given location both cache and a directory +holding temporary files set by the <link id="proxy_temp_path"/> directive +are put on the same file system. +</para> + +<para> +In addition, all active keys and information about data are stored +in a shared memory zone, whose <value>name</value> and <value>size</value> +are configured by the <literal>keys_zone</literal> parameter. +Cached data that are not accessed during the time specified by the +<literal>inactive</literal> parameter get removed from the cache +regardless of their freshness. +By default, <literal>inactive</literal> is set to 10 minutes. +</para> + +<para> +The special process “cache manager” monitors the maximum cache size set +by the <literal>max_size</literal> parameter; +when this size is exceeded it removes the least recently used data. +</para> + +</directive> + + +<directive name="proxy_cache_use_stale"> +<syntax> + <literal>error</literal> | + <literal>timeout</literal> | + <literal>invalid_header</literal> | + <literal>updating</literal> | + <literal>http_500</literal> | + <literal>http_502</literal> | + <literal>http_503</literal> | + <literal>http_504</literal> | + <literal>http_404</literal> | + <literal>off</literal> + ...</syntax> +<default>off</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +If an error occurs while working with the proxied server it is possible +to use a stale cached response. +This directives determines in which cases it is permitted. +The directive’s parameters match those of the +<link id="proxy_next_upstream"/> directive. +Additionally, the <literal>updating</literal> parameter permits +to use a stale cached response if it is currently being updated. +</para> + +</directive> + + +<directive name="proxy_cache_valid"> +<syntax>[<value>code</value> ...] <value>time</value></syntax> +<default/> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Sets caching time for different response codes. +For example, the following directives +<example> +proxy_cache_valid 200 302 10m; +proxy_cache_valid 404 1m; +</example> +set 10 minutes of caching for responses with codes 200 and 302, +and 1 minute for responses with code 404. +</para> + +<para> +If only caching <value>time</value> is specified +<example> +proxy_cache_valid 5m; +</example> +then only 200, 301, and 302 responses are cached. +</para> + +<para> +In addition, it can be specified to cache any answers using the +<literal>any</literal> parameter: +<example> +proxy_cache_valid 200 302 10m; +proxy_cache_valid 301 1h; +proxy_cache_valid any 1m; +</example> +</para> + +</directive> + + +<directive name="proxy_connect_timeout"> +<syntax><value>time</value></syntax> +<default>60s</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Defines a timeout for establishing a connection with the proxied server. +It should be noted that this timeout cannot usually exceed 75 seconds. +</para> + +</directive> + + +<directive name="proxy_hide_header"> +<syntax><value>field</value></syntax> +<default/> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +By default, +nginx does not pass the header fields <header>Date</header>, +<header>Server</header>, <header>X-Pad</header>, and +<header>X-Accel-...</header> from the response of a proxied +server to a client. +The <literal>proxy_hide_header</literal> directive sets additional fields +that will not be passed. +If, on the contrary, the passing of fields needs to be enabled, +the <link id="proxy_pass_header"/> directive can be used. +</para> + +</directive> + + +<directive name="proxy_ignore_client_abort"> +<syntax><literal>on</literal> | <literal>off</literal></syntax> +<default>off</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Determines should the connection with a proxied server be +closed if a client closes a connection without waiting +for an answer. +</para> + +</directive> + + +<directive name="proxy_ignore_headers"> +<syntax><value>field</value> ...</syntax> +<default/> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Disables processing of some response header fields from the proxied server. +The following fields can be ignored: <header>X-Accel-Redirect</header>, +<header>X-Accel-Expires</header>, <header>X-Accel-Limit-Rate</header> (1.1.6), +<header>X-Accel-Buffering</header> (1.1.6), +<header>X-Accel-Charset</header> (1.1.6), <header>Expires</header>, +<header>Cache-Control</header>, and <header>Set-Cookie</header> (0.8.44). +</para> + +</directive> + + +<directive name="proxy_intercept_errors"> +<syntax><literal>on</literal> | <literal>off</literal></syntax> +<default>off</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Determines whether proxied responses with codes greater or equal to 400 +should be passed to a client or be redirected to nginx for processing +using the <link doc="ngx_http_core_module.xml" id="error_page"/> directive. +</para> + +</directive> + + +<directive name="proxy_next_upstream"> +<syntax> + <literal>error</literal> | + <literal>timeout</literal> | + <literal>invalid_header</literal> | + <literal>http_500</literal> | + <literal>http_502</literal> | + <literal>http_503</literal> | + <literal>http_504</literal> | + <literal>http_404</literal> | + <literal>off</literal> + ...</syntax> +<default>error timeout</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Specifies in which cases a request should be passed to the next server: +<list type="tag"> + +<tag-name><literal>error</literal></tag-name> +<tag-desc>an error occurred while establishing a connection with the +server, passing it a request, or reading the response header;</tag-desc> + +<tag-name><literal>timeout</literal></tag-name> +<tag-desc>a timeout has occurred while establishing a connection with the +server, passing it a request, or reading the response header;</tag-desc> + +<tag-name><literal>invalid_header</literal></tag-name> +<tag-desc>a server returned empty or invalid response;</tag-desc> + +<tag-name><literal>http_500</literal></tag-name> +<tag-desc>a server returned a response with the code 500;</tag-desc> + +<tag-name><literal>http_502</literal></tag-name> +<tag-desc>a server returned a response with the code 502;</tag-desc> + +<tag-name><literal>http_503</literal></tag-name> +<tag-desc>a server returned a response with the code 503;</tag-desc> + +<tag-name><literal>http_504</literal></tag-name> +<tag-desc>a server returned a response with the code 504;</tag-desc> + +<tag-name><literal>http_404</literal></tag-name> +<tag-desc>a server returned a response with the code 404;</tag-desc> + +<tag-name><literal>off</literal></tag-name> +<tag-desc>disables passing a request to the next server.</tag-desc> + +</list> +</para> + +<para> +It should be understood that passing a request to the next server is +only possible if a client was not sent anything yet. +That is, if an error or a timeout occurs in the middle of +transferring a response, fixing this is impossible. +</para> + +</directive> + + +<directive name="proxy_no_cache"> +<syntax><value>string</value> ...</syntax> +<default/> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Defines conditions under which the answer will not be saved to a cache. +If at least one value of the string parameters is not empty and is not +equal to “0” then the answer will not be saved: +<example> +proxy_no_cache $cookie_nocache $arg_nocache$arg_comment; +proxy_no_cache $http_pragma $http_authorization; +</example> +Can be used along with the <link id="proxy_cache_bypass"/> directive. +</para> + +</directive> + + +<directive name="proxy_pass"> +<syntax><value>URL</value></syntax> +<default/> +<context>location</context> +<context>if in location</context> +<context>limit_except</context> + +<para> +Sets an address of the proxied server and a URI that maps a location. +An address can be specified as a domain name or an address, and a port, +for example, +<example> + proxy_pass http://localhost:8000/uri/; +</example> +or as a UNIX-domain socket path: +<example> + proxy_pass http://unix:/tmp/backend.socket:/uri/; +</example> +here a path is specified after the word “<literal>unix</literal>” +and enclosed in two colons. +</para> + +<para> +If a domain name maps to several addresses, all of them will be +used in a round-robin fashion. +In addition, an address can be specified as a +<link doc="ngx_http_upstream_module.xml">server group</link>. +</para> + +<para> +When passing a request to the server, part of a URI matching the location +is replaced by a URI specified in the <literal>proxy_pass</literal> directive. +This rule has two exceptions where a replacement location cannot be +defined: +<list type="bullet"> + +<listitem> +when a location is specified using a regular expression; +</listitem> + +<listitem> +if a URI is changed using the +<link doc="ngx_http_rewrite_module.xml" id="rewrite"/> directive +inside a proxied location, and this same configuration will be +used to process a request (<literal>break</literal>): +<example> +location /name/ { + rewrite /name/([^/]+) /users?name=$1 break; + proxy_pass http://127.0.0.1; +} +</example> +In these cases a URI is passed without mapping. +</listitem> + +</list> +</para> + +<para> +It can also be specified that a request URI should be passed unchanged, +in the same form it was sent by the client, not the processed form. +During a processing +<list type="bullet"> + +<listitem> +two or more adjacent slashes are replaced by one: “//” — “/”; +</listitem> + +<listitem> +links to the current directory get removed: “/./” — “/”; +</listitem> + +<listitem> +links to the parent directory get removed: “/dir/../” — “/”. +</listitem> + +</list> +</para> + +<para> +If a URI should be passed unchanged then the server URL should be specified +without a URI in the <literal>proxy_pass</literal> directive: +<example> +location /some/path/ { + proxy_pass http://127.0.0.1; +} +</example> +</para> + +<para> +Server name, its port, and passed URI can be specified using variables: +<example> + proxy_pass http://$host$uri; +</example> +or like this: +<example> + proxy_pass $request; +</example> +</para> + +<para> +In this case the server name is searched among the described +<link doc="ngx_http_upstream_module.xml">server groups</link>, +and if not found is determined using a +<link doc="ngx_http_core_module.xml" id="resolver"/>. +</para> + +</directive> + + +<directive name="proxy_pass_header"> +<syntax><value>field</value></syntax> +<default/> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Permits to pass <link id="proxy_hide_header">otherwise disabled</link> header +fields from a proxied server to a client. +</para> + +</directive> + + +<directive name="proxy_read_timeout"> +<syntax><value>time</value></syntax> +<default>60s</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Defines a timeout for reading a response from the proxied server. +A timeout is only set between two successive read operations, +not for the transmission of the whole response. +If a proxied server does not transmit anything within this time, +a connection is closed. +</para> + +</directive> + + +<directive name="proxy_redirect"> +<syntax><literal>default</literal></syntax> +<syntax><literal>off</literal></syntax> +<syntax><value>redirect</value> <value>replacement</value></syntax> +<default>default</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Sets a text that should be changed in the header fields +<header>Location</header> and <header>Refresh</header> of a response +from the proxied server. +Suppose a proxied server returned the header field +“<literal>Location: http://localhost:8000/two/some/uri/</literal>”. +The directive +<example> + proxy_redirect http://localhost:8000/two/ http://frontend/one/; +</example> +will rewrite this string to +“<literal>Location: http://frontend/one/some/uri/</literal>”. +</para> + +<para> +A server name may be omitted from the <value>replacement</value> string: +<example> + proxy_redirect http://localhost:8000/two/ /; +</example> +then the primary server’s name and a port, if different from 80, +will be substituted. +</para> + +<para> +The default replacement specified by the <literal>default</literal> parameter +uses the parameters of the +<link doc="ngx_http_core_module.xml" id="location"/> and +<link id="proxy_pass"/> directives. +Hence, the two configurations below are equivalent: +<example> +location /one/ { + proxy_pass http://upstream:port/two/; + proxy_redirect default; +</example> + +<example> +location /one/ { + proxy_pass http://upstream:port/two/; + proxy_redirect http://upstream:port/two/ /one/; +</example> +The <literal>default</literal> parameter is not permitted if +<link id="proxy_pass"/> is specified using variables. +</para> + +<para> +A <value>replacement</value> string can contain variables: +<example> + proxy_redirect http://localhost:8000/ http://$host:$server_port/; +</example> +</para> + +<para> +A <value>redirect</value> can also contain (1.1.11) variables: +<example> + proxy_redirect http://$proxy_host:8000/ /; +</example> +</para> + +<para> +A directive can be specified (1.1.11) using regular expressions. +In this case, <value>replacement</value> should either start from +the “<literal>~</literal>” symbol for a case-sensitive matching, +or from the “<literal>~*</literal>” symbols for case-insensitive +matching. +A regular expression can contain named and positional captures, +and <value>replacement</value> can reference them: +<example> + proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2; + proxy_redirect ~*/user/([^/]+)/(.+)$ http://$1.example.com/$2; +</example> +</para> + +<para> +There could be several <literal>proxy_redirect</literal> directives: +<example> + proxy_redirect default; + proxy_redirect http://localhost:8000/ /; + proxy_redirect http://www.example.com/ /; +</example> +</para> + +<para> +The <literal>off</literal> parameter cancels all +<literal>proxy_redirect</literal> directives on the current level: +<example> + proxy_redirect off; + proxy_redirect default; + proxy_redirect http://localhost:8000/ /; + proxy_redirect http://www.example.com/ /; +</example> +</para> + +<para> +Using this directive it is also possible to add host names to relative +redirects issued by a proxied server: +<example> + proxy_redirect / /; +</example> +</para> + +</directive> + + +<directive name="proxy_send_timeout"> +<syntax><value>time</value></syntax> +<default>60s</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Sets a timeout for transmitting a request to the proxied server. +A timeout is only set between two successive write operations, +not for the transmission of the whole request. +If a proxied server does not receive anything within this time, +a connection is closed. +</para> + +</directive> + + +<directive name="proxy_set_header"> +<syntax><value>field</value> <value>value</value></syntax> +<default>Host $proxy_host</default> +<default>Connection close</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Allows to redefine or append fields to the request header +passed to the proxied server. +A <value>value</value> can contain text, variables, and their combination. +These directives are inherited from the previous level if and +only if there are no +<literal>proxy_set_header</literal> +directives defined on the current level. +By default, only two fields are redefined: +<example> +proxy_set_header Host $proxy_host; +proxy_set_header Connection close; +</example> +</para> + +<para> +An unchanged <header>Host</header> request header field can be passed like this: +<example> +proxy_set_header Host $http_host; +</example> +</para> + +<para> +However, if this field is not present in a client request header then +nothing will be passed. +In such a case it is better to use the <var>$host</var> variable—its +value equals the server name in the <header>Host</header> request header +field, or the primary server name if this field is not present: +<example> +proxy_set_header Host $host; +</example> +</para> + +<para> +In addition, a server name can be passed together with a port of the +proxied server: +<example> +proxy_set_header Host $host:$proxy_port; +</example> +</para> + +<para> +If the value of a header field is an empty string then this +field will not be passed to a proxied server: +<example> +proxy_set_header Accept-Encoding ""; +</example> +</para> + +</directive> + + +<directive name="proxy_ssl_session_reuse"> +<syntax><literal>on</literal> | <literal>off</literal></syntax> +<default>on</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Determines whether SSL sessions can be reused when working with +the proxied server. +If the errors +“<literal>SSL3_GET_FINISHED:digest check failed</literal>” +appear in the logs, try to disable session reuse. +</para> + +</directive> + + +<directive name="proxy_store"> +<syntax> + <literal>on</literal> | + <literal>off</literal> | + <value>string</value></syntax> +<default>off</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Enables saving of files to a disk. +The <literal>on</literal> parameter saves files with paths +corresponding to the directives +<link doc="ngx_http_core_module.xml" id="alias"/> or +<link doc="ngx_http_core_module.xml" id="root"/>. +The <literal>off</literal> parameter disables saving of files. +In addition, the file name can be set explicitly using the +<value>string</value> with variables: +<example> +proxy_store /data/www$original_uri; +</example> +</para> + +<para> +The modification time of files is set according to the received +<header>Last-Modified</header> response header field. +A response is first written to a temporary file, then a file is renamed. +Starting from version 0.8.9 temporary files and the persistent store +can be put on different file systems but be aware that in this case +a file is copied across two file systems instead of the cheap rename operation. +It is thus recommended that for any given location both saved files and a +directory holding temporary files set by the <link id="proxy_temp_path"/> +directive are put on the same file system. +</para> + +<para> +This directive can be used to create local copies of static unchangeable +files, e.g.: +<example> +location /images/ { + root /data/www; + open_file_cache_errors off; + error_page 404 = /fetch$uri; +} + +location /fetch/ { + internal; + + proxy_pass http://backend/; + proxy_store on; + proxy_store_access user:rw group:rw all:r; + proxy_temp_path /data/temp; + + alias /data/www/; +} +</example> +</para> + +<para> +or like this: +<example> +location /images/ { + root /data/www; + error_page 404 = @fetch; +} + +location @fetch { + internal; + + proxy_pass http://backend; + proxy_store on; + proxy_store_access user:rw group:rw all:r; + proxy_temp_path /data/temp; + + root /data/www; +} +</example> +</para> + +</directive> + + +<directive name="proxy_store_access"> +<syntax><value>users</value>:<value>permissions</value> ...</syntax> +<default>user:rw</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Sets access permissions for newly created files and directories, e.g.: +<example> +proxy_store_access user:rw group:rw all:r; +</example> +</para> + +<para> +If any <literal>group</literal> or <literal>all</literal> access permissions +are specified then <literal>user</literal> permissions may be omitted: +<example> +proxy_store_access group:rw all:r; +</example> +</para> + +</directive> + + +<directive name="proxy_temp_path"> +<syntax> + <value>path</value> + [<value>level1</value> + [<value>level2</value> + [<value>level3</value>]]]</syntax> +<default>proxy_temp</default> +<context>http</context> +<context>server</context> +<context>location</context> + +<para> +Defines a directory for storing temporary files +received from another server. +Up to three-level subdirectory hierarchy can be used underneath the specified +directory. +For example, in the following configuration +<example> +proxy_temp_path /spool/nginx/proxy_temp 1 2; +</example> +a temporary file might look like this: +<example> +/spool/nginx/proxy_temp/<emphasis>7</emphasis>/<emphasis>45</emphasis>/00000123<emphasis>457</emphasis> +</example> +</para> + +</directive> + +</section> + + +<section id="variables" name="Embedded Variables"> + +<para> +The <literal>ngx_http_proxy_module</literal> module supports embedded variables +that can be used to compose headers using the +<link id="proxy_set_header"/> directive: +<list type="tag"> + +<tag-name><var>$proxy_host</var></tag-name> +<tag-desc>name and port of a proxied server;</tag-desc> + +<tag-name><var>$proxy_port</var></tag-name> +<tag-desc>port of a proxied server;</tag-desc> + +<tag-name><var>$proxy_add_x_forwarded_for</var></tag-name> +<tag-desc>the <header>X-Forwarded-For</header> client request header field +with the <var>$remote_addr</var> variable appended to it, separated by a comma. +If the <header>X-Forwarded-For</header> field is not present in the client +request header, the <var>$proxy_add_x_forwarded_for</var> variable is equal +to the <var>$remote_addr</var> variable.</tag-desc> +</list> +</para> + +</section> + +</module>
--- a/xml/en/docs/index.xml +++ b/xml/en/docs/index.xml @@ -106,6 +106,11 @@ ngx_http_mp4_module</a> </item> <item> +<a href="/en/docs/http/ngx_http_proxy_module.xml"> +ngx_http_proxy_module</a> +</item> + +<item> <a href="/en/docs/http/ngx_http_random_index_module.xml"> ngx_http_random_index_module</a> </item>
--- a/xml/en/index.xml +++ b/xml/en/index.xml @@ -46,7 +46,8 @@ Serving static and index files, and auto </item> <item> -Accelerated reverse proxying with caching; +<link doc="docs/http/ngx_http_proxy_module.xml">Accelerated +reverse proxying with caching</link>; simple load balancing and fault tolerance; </item>