Syntax: | proxy_pass |
---|---|
Default: | — |
Context: | location , if in location , limit_except |
Sets the protocol and address of a proxied server and an optional URI to which a location should be mapped. As a protocol, “http
” or “https
” can be specified. The address can be specified as a domain name or IP address, and an optional port:
proxy_pass http://localhost:8000/uri/;
or as a UNIX-domain socket path specified after the word “unix
” and enclosed in colons:
proxy_pass http://unix:/tmp/backend.socket:/uri/;
If a domain name resolves to several addresses, all of them will be used in a round-robin fashion. In addition, an address can be specified as a server group.
A request URI is passed to the server as follows:
- If the
proxy_pass
directive is specified with a URI, then when a request is passed to the server, the part of a normalized request URI matching the location is replaced by a URI specified in the directive:location /name/ { proxy_pass http://127.0.0.1/remote/; }
- If
proxy_pass
is specified without a URI, the request URI is passed to the server in the same form as sent by a client when the original request is processed, or the full normalized request URI is passed when processing the changed URI:location /some/path/ { proxy_pass http://127.0.0.1; }
Before version 1.1.12, if
proxy_pass
is specified without a URI, the original request URI might be passed instead of the changed URI in some cases.
In some cases, the part of a request URI to be replaced cannot be determined:
- When location is specified using a regular expression.
In this case, the directive should be specified without a URI.
- When the URI is changed inside a proxied location using the rewrite directive, and this same configuration will be used to process a request (
break
):location /name/ { rewrite /name/([^/]+) /users?name=$1 break; proxy_pass http://127.0.0.1; }
In this case, the URI specified in the directive is ignored and the full changed request URI is passed to the server.
A server name, its port and the passed URI can also be specified using variables:
proxy_pass http://$host$uri;
or even like this:
proxy_pass $request;
In this case, the server name is searched among the described server groups, and, if not found, is determined using a resolver.
WebSocket proxying requires special configuration and is supported since version 1.3.13.
Please login to continue.