Next upstream based on custom http code


There are a few options for when to try next upstream :

Is it possible to configure a custom http code so that upstream servers
send that code if it wants to send nginx to upstream ?


Like… 503?
To me ‘server wants to make another upstream dealing with the request’
sounds very much like ‘Service Unavailable’.

B. R.

No, 503 may be a legitimate error from upstream that nginx needs to pass
I am thinking some unused code , say, 590.

If the upstream refuses to process a request, you might wish to emulate
unavailable service or a lack of response (timeout). Backend up and
are expected to process requests.
Switching between legitimate errors and faked one will be done by
monitoring backend logs.

There is no such thing as a ‘Coffee Break’ HTTP code. :oP

B. R.

Here is my flow: client - nginx - upstream - real upstream

Upstream is getting the response from the ‘real’ upstream. So if real
upstream is wrong, nginx will get standard 5xx from upstream and in this
case I don’t really want nginx to try next upstream because it will hit
same bad real upstream with the same error code. In other cases where
upstream is good but one upstream is having too much load or wants to
finish up in flight requests then go down for maintenance , is it
for upstream to send a soft error code to nginx to tell it try next