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 <mdou...@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@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx