Nginx response with persistence session and backend server failure

Vladimir Homutov vl at nginx.com
Mon Jul 27 18:04:18 UTC 2015


On Mon, Jul 27, 2015 at 12:40:04PM +0530, Bhuvan Gupta wrote:
> Hello all,
>
> I was reading Nginx documentation
> <http://nginx.org/en/docs/http/ngx_http_upstream_module.html?&_ga=1.189051176.2090890265.1437394769#sticky_cookie>
> on
> persistence session using cookie and below is from documentation
>
> A request that comes from a client not yet bound to a particular server is
> passed to the server selected by the configured balancing method. Further
> requests with this cookie will be passed to the designated server. *If the
> designated server cannot process a request*, *the new server is selected as
> if the client has not been bound yet*.
>
> The last line says that
>
> *If the designated server cannot process a request*.
>
> What does it mean to say "the server cannot process a request."

it means:
    - nginx either failed to contact upstream server and get
      response from it (within configured timeouts - see
      proxy_*_timeout directives), or some limit was hit (i.e.
      max_conns)

    - either the response was obtained, but considered inadequate
      and nginx decided not to deliver the answer to client and
      instead try other server (or return an error immediately - see
      nginx.org/r/proxy_next_upstream)

>
> Question 1:
> Does it mean the server was down ?
> or does it mean server responded with some error code ?
> or does it mean that it did not responded in a certain time interval ?
> or does it mean that max number of connection limit is reached on that
> server ?

in short: this is configurable, see above.

>
> Question 2:
> Let say there were 3 backend-server and we are using session persistence
> using cookie.
> Now assume that 2 of the backed server goes down so niginx will route all
> request to 3rd server
> Now 2 other server came back online, will niginx use the other 2 server to
> route the request even if request have the persistence cookie for 3rd
> server.

obviously, not. If a request has a cookie for 3rd server and it is
available, it will be routed to a 3rd server.
Requests without cookies will be routed to servers according load
balancing methods.



More information about the nginx mailing list