Possible bug with "proxy_intercept_errors on; " + "error_page 301 302"?

Fabiano Furtado Pessoa Coelho fusca14 at gmail.com
Sat Jul 1 01:15:45 UTC 2023


Thanks.

On Fri, Jun 30, 2023, 9:44 PM Maxim Dounin <mdounin at mdounin.ru> wrote:

> Hello!
>
> On Fri, Jun 30, 2023 at 01:24:18PM -0300, Fabiano Furtado Pessoa Coelho
> wrote:
>
> > Hello Maxim...
> >
> > On Thu, Jun 29, 2023 at 7:00 PM Maxim Dounin <mdounin at mdounin.ru> wrote:
> > >
> > > Hello!
> > >
> > > On Thu, Jun 29, 2023 at 04:29:39PM -0300, Fabiano Furtado Pessoa
> Coelho wrote:
> > >
> > > > Hi...
> > ...
> > > > "proxy_intercept_errors on;"?
> > >
> > > The "proxy_intercept_errors" handling does not copy any response
> > > headers from the original response (the only exception is
> > > WWW-Authenticate for 403 responses).
> > >
> > > If you want nginx to copy some headers, consider doing it yourself
> > > with the $upstream_http_* variables and the add_header directive.
> > > Something like this should work:
> > >
> > >     location /30x.html {
> > >         add_header Location $upstream_http_location;
> > >         ...
> > >     }
> > >
> > > Note though that you'll have to manually rewrite location if
> > > needed (as proxy_redirect handling won't be used).
> >
> > Your approach worked fine for me! Thanks for the help.
> >
> > Horever, without this "add_header" modification and with
> > "proxy_intercept_errors on;", I've two situations:
> > * without "error_page 301 302 /30x.html;" directive configured: I
> > receive the HTTP "location" header from my NGINX;
> > * with "error_page 301 302 /30x.html;" directive configured: I don't
> > receive the HTTP "location" header from my NGINX;
> >
> > If "proxy_intercept_errors" handling does not copy any response
> > headers from the original response, why is this HTTP "location" header
> > present with "error_page 301 302 /30x.html;" directive configured in
> > my system?
> >
> > I really don't understand why it happens.
>
> The "proxy_intercept_errors" directive only works for error
> responses for which you have an error_page explicitly configured.
> That is:
>
> - If you don't have an error_page configured for the particular
>   response code, nginx returns the original response as obtained
>   from the upstream server, with all the response headers, much like
>   it does with "proxy_intercept_errors off;".
>
> - If you do have an error_page configured, nginx instead
>   intercepts the error as per "proxy_intercept_errors on;", and
>   returns the error page to the client.  This response does not contain
>   headers from the original response.
>
> This seems to be exactly what you are seeing (assuming "with" in
> your final question is a typo, and you mean "without" instead).
> Hope this helps.
>
> --
> Maxim Dounin
> http://mdounin.ru/
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20230630/e03183db/attachment.htm>


More information about the nginx mailing list