<div dir="ltr"><div>Hello.<br></div><div><br></div><div>This is a question about the "$status" log value when "proxy_read_timeout" occurs.<br></div>Nginx version in use: v1.25.3<br><br>Contents of 1Mbyte size were requested to [Origin Server].<br>A response up to approximately 500Kbytes in size, including the header, was received without delay.<br>However, after 500Kbytes, no response was received from Origin for 3 seconds and the connection (time-out)<br>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.<br><br><div>While checking the log, I noticed that the "$status" value in the access log was different from what I thought.<br>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.<br></div><div><br></div><div>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.<br></div><div>Should I check a variable other than "$status" for responses to abnormal timeouts such as "proxy_read_timeout"?<br><br>Any help is appreciated.<br></div><div><br></div><div>Best regards,<br>kyucheol<br></div><div><br></div><div><br></div><div>-----</div><div><br></div><div>[ config ]<br>log_format read_log<br>    '[$time_iso8601] '<br>    '$request_time\t'<br>     '$host '<br>      '$request_method '<br>    '$request '<br><font color="#ff0000"><b>    '$status</b></font> '<br>     '$upstream_status '<br>   '$body_bytes_sent '<br>   '$request_id';<br>        <br>server {<br>      listen 80;<br>      server_name <a href="http://test.read_timeout.com">test.read_timeout.com</a>;<br>      access_log /etc/nginx/log/$server_name/access.log read_log;<br><br>      proxy_cache_valid 200 206 304 1d;<br>      proxy_connect_timeout   30s;<br>      proxy_read_timeout      3s; <br><br>      proxy_set_header Host <a href="http://testmedia.net">testmedia.net</a>;<br>      proxy_ignore_headers Cache-Control;<br>     </div><div>      location / {<br>            proxy_pass http://[Origin server];<br>      }<br>}<br></div><div><br></div><div><br></div><div>[ curl request ]<br>> GET /media3/testfile HTTP/1.1<br>> User-Agent: curl/7.29.0<br>> Accept: */*<br>> Host: <a href="http://test.read_timeout.com">test.read_timeout.com</a><br>><br>< HTTP/1.1 200 OK<br>< Date: Wed, 10 Jan 2024 08:20:52 GMT<br>< Content-Type: text/plain<br>< Content-Length: 1048576<br>< Connection: keep-alive<br>< Server: nginx<br>< Last-Modified: Thu, 17 Aug 2023 12:43:31 GMT<br>< ETag: "64de15f3-100000"<br>< Age: 1<br>< vary: B<br>< Accept-Ranges: bytes<br><<br>{ [data not shown]<br> 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<br> 46 1024k   46  479k    0     0   155k      0  0:00:06  0:00:03  0:00:03  155k<br>* Closing connection 0<br>curl: (18) transfer closed with 557689 bytes remaining to read<br></div><div><br></div><div><br></div><div>[ error log ]<br>2024/01/10 17:20:55 [error] 98285#98285: *1<b> upstream timed out (110: Connection timed out) while reading upstream</b>, client: 127.0.0.1, server: <a href="http://test.read_timeout.com">test.read_timeout.com</a>, request: "GET /media3/testfile HTTP/1.1", ~~~~~~~<br><br><br>[ access log ]<br>[2024-01-10T17:20:55+09:00] 3.080       <a href="http://test.read_timeout.com">test.read_timeout.com</a> GET GET /media3/testfile HTTP/1.1 <b><font color="#ff0000">200 </font></b>200 490887 45f01510d4ec56f01899c9dea81e7628<br></div><div><br></div><div>-----<br></div><div><br></div></div>