Opened 12 months ago

Last modified 12 months ago

#2486 new enhancement

Documentation for client_max_body_size may contain an error

Reported by: liam.boxclever.ca@… Owned by:
Priority: minor Milestone:
Component: documentation Version:
Keywords: Cc:
uname -a: n/a
nginx -V: n/a

Description

http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

contains:
"Please be aware that browsers cannot correctly display this error."

I have seen this error displayed in Chrome as a simple HTML error document output by nginx, so it seems that some browsers can display this error.

Could you please clarify if there are different outcomes for other browsers? Thank you!

Change History (2)

comment:1 by Sergey Kandaurov, 12 months ago

The sentence was written in the old times of dominating MSIE 4.x-6.x and Netscape 4.x, which poorly handled receiving of response with accompanying connection close before they finished sending client body. Nowadays this is usually managed using lingering close. Still the connection can be closed non-lingered by middleboxes such as forward proxy.
Things could be improved since then.

in reply to:  1 comment:2 by Maxim Dounin, 12 months ago

Replying to Sergey Kandaurov:

The sentence was written in the old times of dominating MSIE 4.x-6.x and Netscape 4.x, which poorly handled receiving of response with accompanying connection close before they finished sending client body. Nowadays this is usually managed using lingering close. Still the connection can be closed non-lingered by middleboxes such as forward proxy.

The sentence in question was written with lingering close in mind (and properly implemented in nginx). It does not, however, prevent browsers from ignoring the response sent by nginx till the request body is completely sent, and this might not happen till lingering_time expires.

Nowadays, tree main factors prevail:

  • Requests are smaller compared to typical channel throughput, so hitting lingering_time is less likely even if the browser ignores the response before the request body is completely sent.
  • Browsers improved in handling of HTTP, and might try to handle the response before the request body is completely sent.
  • In HTTP/2, bi-directional communication is more or less required, so most browsers can handle such error responses at least via HTTP/2.

It might make sense to do some additional testing to see the actual current state across various browsers and protocols, and probably rewrite the sentence to something less scary, such as "might not be able to...".

Note: See TracTickets for help on using tickets.