Nginx drops server our LB if it see HTTP 400.

Maxim Dounin mdounin at mdounin.ru
Thu Nov 16 16:04:40 UTC 2017


Hello!

On Thu, Nov 16, 2017 at 03:03:49PM +0200, Brent Clark wrote:

> Good day Guys
> 
> I'm sitting with a very peculiar problem, and I was hoping someone could
> be of assistance.
> 
> Right now everything is a theory, but when I switch back to LVS
> everything works. Reason I like and want Nginx is for the reverse
> caching (caching of images).
> 
> As said, Im using Nginx for reverse caching and load balancing, and I'm
> seeing the following in the Nginx error log.
> 
> 2017/11/16 10:16:38 [error] 75140#75140: *27952 no live upstreams while
> connecting to upstream, client: 52.169.148.4, server:
> REMOVEDCLIENTDOMAIN, request: "GET /1298310/SNIPPET_OF_URL HTTP/1.1",
> upstream: "https://sslloadbalance/1298310/SNIPPET_OF_URL", host:
> "REMOVEDCLIENTDOMAIN".
> 
> I understand that, Nginx says is cant connect to the backend servers,
> but the backend servers are 100%.

It says that all the backends configured previously failed and 
not allowed to serve requests due to max_fails / fail_timeout 
configured.

Look for previously reported errors to find out exact errors, and 
take a look at your proxy_next_upstream configuration in case it's 
not the default one.

More information is here:

http://nginx.org/r/proxy_next_upstream
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#fail_timeout

> My theory is, when ever a URL is called and an HTTP 400 is returned,
> Nginx picks this up, and does not like it, and then drops the server
> out., e.g.
> 
> REMOVED_IP_OF_LB - - [16/Nov/2017:10:16:38 +0200] "GET
> /wp-admin/admin-ajax.php?action=yop_poll_load_js&id=-1&location=page&unique_id=_yp5a0d4965c79ac&ver=5.5
> HTTP/1.0" 400 226 "-" "-"

No, the theory isn't correct.  Responses with status code 400 has 
nothing to do with the above error.

-- 
Maxim Dounin
http://mdounin.ru/


More information about the nginx mailing list