Using $upstream_response_time in add_header shows a dash
nginx-forum at forum.nginx.org
Sun Feb 7 22:51:51 UTC 2021
Maxim Dounin Wrote:
> On Fri, Feb 05, 2021 at 03:38:16PM -0500, MarioIshac wrote:
> > Hello all,
> > I have this example nginx.conf:
> > https://gist.github.com/MarioIshac/e6971ab0b343da210de62ebb1c6e2f99
> > reproduce the behavior.
> > I start nginx and an example upstream with:
> > python3 -u -m http.server 8001 > app.log 2>&1 & sudo nginx >
> nginx.log 2>&1
> > Upon hitting nginx with `curl -i localhost:8000`, I see these
> > headers:
> > X-Trip-Time: 0.001
> > X-Addr: 127.0.0.1:8001
> > X-Status: 200
> > X-Process-Time: -
> > `cat app.log` shows that upstream was hit successfully, and `cat
> > shows that nginx knows the $upstream_response_time at log time, as I
> > this log:
> > 127.0.0.1:8001 200 0.004
> > Why does nginx substitute the request time and relevant response
> > (like $upstream_status) at add_header time successfully, yet
> substitutes the
> > upstream response time with a dash?
> > My goal with returning $upstream_response_time in a header is so the
> > can know how much of their request latency was due to their upload
> > vs. server processing time.
> That's because response headers are sent before the
> $upstream_response_time is known: it is only known when the
> response is fully received from the upstream server, including the
> response body, and this happens after the response headers are
> sent to the client. If you want to return something in the
> response headers, consider the $upstream_header_time variable
> instead (http://nginx.org/r/$upstream_header_time).
> Maxim Dounin
> nginx mailing list
> nginx at nginx.org
Thanks for the great clarification. I've tested out returning
$upstream_header_time in a response header and it is very close to the
$upstream_response_time that is logged, so I'll be going with this.
This is more out of curiosity rather than a need (since the times were
really close anyways), but does nginx have an option to buffer the whole
response (headers and body) before sending it?
Posted at Nginx Forum: https://forum.nginx.org/read.php?2,290674,290679#msg-290679
More information about the nginx