Setting an error_page for upstream timeouts

I have a seemingly simple question about configuration, but have been
unable to find the answer through searching so far. I just want to
override
the default 504 page when the upstream server times out, which I would
have
thought would be handled by the error_page setting. Can anyone help?

My config looks like this (the variables are replaced before nginx is
started):
upstream jsweb {
server 127.0.0.1:8091;
}

server {
listen $PORT$;
server_name localhost;
root $CONTENT_ROOT$;

location / {
  add_header        X-Server-Name    "$HOST_NAME$";
  proxy_set_header  X-Real-IP        $remote_addr;
  proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
  proxy_set_header  Host             $http_host;
  proxy_pass        http://jsweb;
  error_page 502 503 504 $OUTAGE_PAGE$;
}

}

And the errors in the logs look like:

2011/12/23 03:50:35 [error] 13736#0: *9 upstream timed out (110:
Connection
timed out) while reading response header from upstream, client:
10.214.178.111, server: localhost, request: “GET /-/forgot_password
HTTP/1.1”, upstream: “http://127.0.0.1:8091/”, host: “staging.myapp.com

On Fri, Dec 23, 2011 at 10:59 AM, Dustin Moskovitz
[email protected] wrote:

I have a seemingly simple question about configuration, but have been unable
to find the answer through searching so far. I just want to override the
default 504 page when the upstream server times out, which I would have
thought would be handled by the error_page setting. Can anyone help?

this parameter

http://wiki.nginx.org/HttpProxyModule#proxy_intercept_errors

should help.


O< ascii ribbon campaign - stop html mail - www.asciiribbon.org

Hello!

On Thu, Dec 22, 2011 at 07:59:20PM -0800, Dustin Moskovitz wrote:

  proxy_pass        http://jsweb;
  error_page 502 503 504 $OUTAGE_PAGE$;
}

}

And the errors in the logs look like:

2011/12/23 03:50:35 [error] 13736#0: *9 upstream timed out (110: Connection
timed out) while reading response header from upstream, client:
10.214.178.111, server: localhost, request: “GET /-/forgot_password
HTTP/1.1”, upstream: “http://127.0.0.1:8091/”, host: “staging.myapp.com

And what’s wrong? Everything looks fine from here: nginx will log
error and return error to client as specified in “$OUTAGE_PAGE$”
(I assume it’s something obfuscated or expanded by your
configuration system).

Maxim D.

Thanks - that looks right on. I will give it a shot on Monday when I’m
back
at the office.

On Sat, Dec 24, 2011 at 3:21 AM, Dustin Moskovitz
[email protected] wrote:

Thanks - that looks right on. I will give it a shot on Monday when I’m back
at the office.

sorry, my bad. You don’t need the proxy_intercept_errors, you just
need to specify “location = $OUTAGE_PAGE$ { }” block or make sure it’s
not handled by “location / { }” block.


O< ascii ribbon campaign - stop html mail - www.asciiribbon.org