Directive determines, in what cases the request will be transmitted to the next server:
·error ― an error has occurred while connecting to the server, sending a request to it, or reading its response;
·timeout ― occurred timeout during the connection with the server, transfer the requst or while reading response from the server;
·invalid_header ― server returned a empty or incorrect answer;
·http_500 ― server returned answer with code 500
·http_503 ― server returned answer with code 503
·http_404 ― server returned answer with code 404
·off ― it forbids the request transfer to the next server
Transferring the request to the next server is only possible when nothing has been transferred to the client -- that is, if an error or timeout arises in the middle of the transfer of the request, then it is not possible to retry the current request on a different server.