Problem with post_action when used with return 202; and POST request
Pyry Hakulinen
pyry at automattic.com
Sat Aug 13 20:06:38 UTC 2011
Howdy,
> No, this is incorrect. Body should be either read or discarded
> before response could be returned (else communication with clients
> which write body and only then read response will just deadlock).
Ah, indeed, I see what you mean. I didn't see it deadlock, but I
really didn't test it all that much. Thanks for looking.
> (I personally consider post_action to be a dirty hack which should
> be removed entirely, and it's not officially documented on purpose,
> but that's another story.)
Yeah, it looks like it isn't that reliable when used with POST
requests. For example, using this:
location / {
proxy_pass http://some.server;
post_action @post;
}
location @post {
proxy_pass http://some.server;
}
post_action will fail when client request body is buffered to a temp
file. Can be "fixed" by increasing client_body_buffer_size or by
discarding request body in @post location (proxy_pass_request_body
off; proxy_set_header Content-Length 0;).
> In you particular case I would recommend actually using module to
> read body and return 202 response instead of using "return 202".
Thanks, this is probably what we will end up doing.
-Pyry
More information about the nginx
mailing list