This was a huge problem for me finally figuring out why I had constant crashes. I'm using a unix socket configuration so I thought that setting or not setting TCP variables in my nginx wouldn't have mattered. If you're reading this, you know that in nginx, you can run the webserver in two configurations, accepting calls on a TCP port via the network, or as I chose, on a socket of the processor handler.

In one case I moved an nginx configuration from one server to another and at the same time opted to reconfigure it to socket versus TCP config. Turns out, this leftover TCP setting drastically affected my socket configuration. So, it was a learning point that all of nginx's options are not completely independent of configuration. A nasty bug in *this* option lets it take effect when it isn't supposed to. Completely screwed me over for like, 2 days.

I was getting a lot of these:
[error] recv() failed (104: Connection reset by peer) while reading response header from upstream

[error] recv() failed (104: Connection reset by peer) while reading response header from upstream

nginx
tcp_nodelay off
When running a socket configuration.