I'm interested on the subject.
On my current set up, I'm using the timeout option to make sure the request is passed to the next upstream if the first server is down.
If the request is hanging, it's possible the request coming in is a bad request, which could slow down the full cluster.
I would like to go to the next upstream only on connection timeout.
I wonder if you could provide two additional options, "read_timeout" and "connect_timeout", leaving "timeout" unchanged.