Se o backend estiver realmente retornando um 502, e ele não estiver sendo gerado internamente pelo nginx porque o backend está inacessível, será necessário ativar proxy_intercept_errors para que sua diretiva error_page tenha efeito.
Eu tenho a configuração nginx para passar para um upstream usando o proxy pass. O upstream é escrito para retornar uma resposta http 502 em certas requisições, ao invés de retornar o 502 com todo o cabeçalho eu gostaria que o nginx recogurasse isso e retornasse 444 para que nada fosse retornado. Isso é possível?
Eu também tentei retornar 444 em qualquer erro 50x, mas também não funciona.
location / {
return 444;
}
location ^~ /service/v1/ {
proxy_pass http://127.0.0.1:3333;
proxy_next_upstream error timeout http_502;
error_page 500 502 503 504 /50x.html;
}
location = /50x.html {
return 444;
}
error_page 404 /404.html;
location = /404.html {
return 444;
}
Se o backend estiver realmente retornando um 502, e ele não estiver sendo gerado internamente pelo nginx porque o backend está inacessível, será necessário ativar proxy_intercept_errors para que sua diretiva error_page tenha efeito.
Sim, é possível. De acordo com a documentação da error_page , pode ser feito assim ...
error_page 500 502 503 504 =444 /50x.html;
Da mesma forma ...
error_page 404 =444 /404.html;
Assim, toda a sua configuração de amostra se tornaria ...
location / { return 444; } location ^~ /service/v1/ { proxy_pass http://127.0.0.1:3333; proxy_next_upstream error timeout http_502; error_page 500 502 503 504 =444 /50x.html; } error_page 404 =444 /404.html;
Tags nginx