| Syntax: | proxy_next_upstream
|
|---|---|
| Default: | proxy_next_upstream error timeout; |
| Context: | http, server, location |
Specifies in which cases a request should be passed to the next server:
error- an error occurred while establishing a connection with the server, passing a request to it, or reading the response header;
timeout- a timeout has occurred while establishing a connection with the server, passing a request to it, or reading the response header;
invalid_header- a server returned an empty or invalid response;
http_500- a server returned a response with the code 500;
http_502- a server returned a response with the code 502;
http_503- a server returned a response with the code 503;
http_504- a server returned a response with the code 504;
http_403- a server returned a response with the code 403;
http_404- a server returned a response with the code 404;
non_idempotent- normally, requests with a non-idempotent method (
POST,LOCK,PATCH) are not passed to the next server if a request has been sent to an upstream server (1.9.13); enabling this option explicitly allows retrying such requests; off- disables passing a request to the next server.
One should bear in mind that passing a request to the next server is only possible if nothing has been sent to a client yet. That is, if an error or timeout occurs in the middle of the transferring of a response, fixing this is impossible.
The directive also defines what is considered an unsuccessful attempt of communication with a server. The cases of error, timeout and invalid_header are always considered unsuccessful attempts, even if they are not specified in the directive. The cases of http_500, http_502, http_503 and http_504 are considered unsuccessful attempts only if they are specified in the directive. The cases of http_403 and http_404 are never considered unsuccessful attempts.
Passing a request to the next server can be limited by the number of tries and by time.
Please login to continue.