Welcome! Log In Create A New Profile

Advanced

Re: client_max_body_size and 100 Continue/413 Request Entity Too Large

November 18, 2012 05:04AM
On Nov 17, 2012, at 0:58 , Joe Shaw wrote:

> Hi,
>
> I have a web app that accepts uploads from clients. We have a relatively high client_max_body_size set, and I'd like for clients to be able to be quickly rejected if they intend to upload files larger than the max body size. The "Expect: 100-continue" header seems ideally suited for this.
>
> However, when I try to upload a large file with curl (which uses the Expect header), nginx responds with "100 Continue" instead of "413 Request Entity Too Large":
>
> > POST /test HTTP/1.1
> > User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
> > Host: example.com
> > Accept: */*
> > Content-Length: 454327718
> > Content-Type: application/octet-stream
> > Expect: 100-continue
> >
> < HTTP/1.1 100 Continue
> < HTTP/1.1 413 Request Entity Too Large
> < Server: nginx/1.2.0
> < Content-Type: text/html; charset=utf-8
> < Date: Fri, 16 Nov 2012 20:40:24 GMT
> < Connection: Keep-Alive
> < Content-Length: 198
>
> I would have expected nginx to return the 413 error instead of the 100 status code. As it is now, the client will continue to upload its data because it got the go ahead via the 100 status code.
>
> Is this a bug (or unimplemented feature) in nginx? Is there any way around this? As you can see from the response, I'm using nginx 1.2.0, which I realize isn't the latest, but I couldn't find anything related to this in the CHANGES file.


The attached patch should fix the bug.


--
Igor Sysoev
http://nginx.com/support.html

Index: src/http/ngx_http_core_module.c
===================================================================
--- src/http/ngx_http_core_module.c (revision 4898)
+++ src/http/ngx_http_core_module.c (working copy)
@@ -1000,6 +1000,7 @@
"client intended to send too large body: %O bytes",
r->headers_in.content_length_n);

+ r->expect_tested = 1;
(void) ngx_http_discard_request_body(r);
ngx_http_finalize_request(r, NGX_HTTP_REQUEST_ENTITY_TOO_LARGE);
return NGX_OK;
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

client_max_body_size and 100 Continue/413 Request Entity Too Large

Joe Shaw November 16, 2012 04:00PM

Re: client_max_body_size and 100 Continue/413 Request Entity Too Large

Maxim Dounin November 17, 2012 04:44PM

Re: client_max_body_size and 100 Continue/413 Request Entity Too Large

Igor Sysoev November 18, 2012 05:04AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 233
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