Static or dynamic content

Francis Daly francis at daoine.org
Thu Oct 20 16:23:51 UTC 2016


On Thu, Oct 20, 2016 at 09:19:29AM +0000, Jens Dueholm Christensen wrote:
> On Tuesday, October 18, 2016 08:28 AM Francis Daly wrote,

Hi there,

> > what output do you get when you use the test config in the earlier mail?
> 
> Alas I did not try that config yet, but I would assume that my tests would show exactly the same as yours - should I try or is it purely academic?

Academic now, I think.

> If upstream returns 503 or 404 I would like to have the contents of the error_page for 404 or 503 returned to the client regardless of the HTTP request method used.

> > Possibly in your case you could convert the POST to a GET by using
> > proxy_method and proxy_pass within your error_page location.

> How would you suggest I could use proxy_method and proxy_pass within the @error_503 location?
> I'm comming up short on how to do that without beginning to resend a POST request as a GET request to upstream - a new request that could now potentially succeed (since a haproxy backend server could become available between the POST failed and the request is retried as a GET)?

I was imagining doing a proxy_pass to nginx, not to upstream, for the
503 errors. So dealing with upstream is not a concern.

However, I've tried testing this now, and it all seems to work happily
if you omit the @named location for error_page.

I add "internal" below, to avoid having the url be directly
externally-accessible.

Does this do what you want it to do?

  server {
    listen 8080;
    error_page 503 /errors/503.html;
    location / {
      root html;
      try_files /offline.html @xact;
    }
    location @xact {
      # this server is "upstream"
      proxy_pass http://127.0.0.1:8082;
      proxy_intercept_errors on;
    }
    location = /errors/503.html {
      internal;
      # this serves $document_root/errors/503.html
    }
  }

For me, when "upstream" returns 503, I get back 503 with the content of
my /usr/local/nginx/html/errors/503.html, whether the initial request
was a GET or a POST.

So perhaps the previous awkwardness was due to the @named location and
the various rewrites.

If that does do what you want, then you can add something similar for 404,
I guess.

Cheers,

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list