post_action, just send http request, not fcgi - more questions + post_action bug?

Rob Mueller robm at
Tue Mar 18 02:25:23 MSK 2008

Hi Igor

>> Also what actually happens to the content that proxy_pass returns in this
>> case. I really want it to just "disappear", and for the moment it does 
>> seem
>> to do that, but is that guaranteed?
> Yes, nginx does not send post_action content to a client.

I've found two issues with using this setup, both of which are rather 
annoying. As a reminder, here's the setup.

    location / {
      proxy_pass                  http://backend/dav/;
      proxy_intercept_errors      off;
      proxy_next_upstream         off;
      post_action                 @ratepostaction;

    location @ratepostaction {
      proxy_pass_request_body off;
      proxy_pass_request_headers off;
      proxy_pass http://unix:/var/state/ratetrack/ratepostaction:;

Problem 1

If the upstream returns an error (eg 404 not found response), then the 
access log seems to log the result of the @ratepostaction proxy response, 
rather than the 404 response

For example, here's what a log line looks like if the backend returns a 404 
response. [18/Mar/2008:10:18:57 +1100] "" 
200 489 "-" "WebDAVFS/1.4.1 (01418000) Darwin/8.11.1 
(i386)" TIME=0.607 GZIP=-

If I comment out the post_action line above and rerun the same request: [18/Mar/2008:10:20:05 +1100] "" 
404 489 "-" "WebDAVFS/1.4.1 (01418000) Darwin/8.11.1 
(i386)" TIME=0.049 GZIP=-

Problem 2

If the upstream returns an error (eg 404), then nginx returns that message 
to the client as follows:

HTTP/1.1 404 Not Found
Server: nginx/0.5.35
Date: Mon, 17 Mar 2008 22:48:13 GMT
Content-Type: text/html; charset=iso-8859-1
Transfer-Encoding: chunked
Connection: keep-alive

<TITLE>404 Not Found</TITLE>
<H1>Not Found</H1>
The requested URL /dav/Contents was not found on this server.<P>
<ADDRESS>Apache/1.3.34 Server at Port 80</ADDRESS>



But rather than actually keeping the connection open, it immediately closes 
it. This seems to be annoying some clients.

Again, if you remove the post_action call, it does keep the connection open 


More information about the nginx mailing list