Welcome! Log In Create A New Profile

Advanced

This is a question about the "$status" log value when "proxy_read_timeout" occurs.

January 15, 2024 11:16PM
Hello.

This is a question about the "$status" log value when "proxy_read_timeout"
occurs.
Nginx version in use: v1.25.3

Contents of 1Mbyte size were requested to [Origin Server].
A response up to approximately 500Kbytes in size, including the header, was
received without delay.
However, after 500Kbytes, no response was received from Origin for 3
seconds and the connection (time-out)
Since the message "upstream timed out...while reading upstream" was logged
in the error log, I think the connection was lost due to the
"proxy_read_timeout 3s" setting.

While checking the log, I noticed that the "$status" value in the access
log was different from what I thought.
In my opinion, if the connection was terminated by "proxy_read_timeout",
the "$status" value would be 5xx, but the "$status" value in the saved
access log was 200.

A normal response was not completed due to "proxy_read_timeout", so I would
like to know why the "$status" value is stored as 200 instead of 5xx.
Should I check a variable other than "$status" for responses to abnormal
timeouts such as "proxy_read_timeout"?

Any help is appreciated.

Best regards,
kyucheol


-----

[ config ]
log_format read_log
'[$time_iso8601] '
'$request_time\t'
'$host '
'$request_method '
'$request '
* '$status* '
'$upstream_status '
'$body_bytes_sent '
'$request_id';

server {
listen 80;
server_name test.read_timeout.com;
access_log /etc/nginx/log/$server_name/access.log read_log;

proxy_cache_valid 200 206 304 1d;
proxy_connect_timeout 30s;
proxy_read_timeout 3s;

proxy_set_header Host testmedia.net;
proxy_ignore_headers Cache-Control;

location / {
proxy_pass http://[Origin server];
}
}


[ curl request ]
> GET /media3/testfile HTTP/1.1
> User-Agent: curl/7.29.0
> Accept: */*
> Host: test.read_timeout.com
>
< HTTP/1.1 200 OK
< Date: Wed, 10 Jan 2024 08:20:52 GMT
< Content-Type: text/plain
< Content-Length: 1048576
< Connection: keep-alive
< Server: nginx
< Last-Modified: Thu, 17 Aug 2023 12:43:31 GMT
< ETag: "64de15f3-100000"
< Age: 1
< vary: B
< Accept-Ranges: bytes
<
{ [data not shown]
46 1024k 46 479k 0 0 155k 0 0:00:06 0:00:03 0:00:03
155k* transfer closed with 557689 bytes remaining to read
46 1024k 46 479k 0 0 155k 0 0:00:06 0:00:03 0:00:03
155k
* Closing connection 0
curl: (18) transfer closed with 557689 bytes remaining to read


[ error log ]
2024/01/10 17:20:55 [error] 98285#98285: *1* upstream timed out (110:
Connection timed out) while reading upstream*, client: 127.0.0.1, server:
test.read_timeout.com, request: "GET /media3/testfile HTTP/1.1", ~~~~~~~


[ access log ]
[2024-01-10T17:20:55+09:00] 3.080 test.read_timeout.com GET GET
/media3/testfile HTTP/1.1 *200 *200 490887 45f01510d4ec56f01899c9dea81e7628

-----
_______________________________________________
nginx mailing list
nginx@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

This is a question about the "$status" log value when "proxy_read_timeout" occurs.

park January 15, 2024 11:16PM

Re: This is a question about the "$status" log value when "proxy_read_timeout" occurs.

Maxim Dounin January 16, 2024 05:28PM

Re: This is a question about the "$status" log value when "proxy_read_timeout" occurs.

park January 16, 2024 09:44PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 180
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready