Nginx drops server our LB if it see HTTP 400.
Brent Clark
brentgclarklist at gmail.com
Thu Nov 16 13:03:49 UTC 2017
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%.
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 "-" "-"
My configuration(s) is very standard / basic.
https://pastebin.com/B6rFwnb6
https://pastebin.com/wsdGPC74
I would have liked to have used 'health_check', but that is only
available in Nginx Plus.
If I run a tcptraceroute to port 80 in a while loop to the back end
servers, everything is ok, and going back to LVS, everything is ok.
I would like to ask, If is a way to either ignore 400 error status or if
I can ask, what is a better way to manage and handle this.
Many thanks, regards
Brent
More information about the nginx
mailing list