Cette question aurait dû trouver une réponse il y a longtemps, mais je ne parviens pas à la résoudre malgré la lecture de nombreuses réponses communes. Quelqu'un peut-il m'indiquer pourquoi ma configuration ne fonctionne pas ?
Objectif : lorsque l'API serveur en amont est hors service (par exemple, ses processus de travail se sont écrasés), je veux que nginx affiche ma page d'erreur personnalisée.
Ma configuration :
location @server {
proxy_pass http://server_api;
proxy_redirect off;
...
proxy_intercept_errors on;
error_page 502 /error-502.html;
}
error_page 502 /error-502.html;
location = /error-502.html {
internal;
root /srv/my-server/html;
}
Mes pas :
- Ma page d'erreur statique est à
/srv/my-server/html/error-502.html
prêt, même permission et mêmes propriétaires que les autres actifs statiques. - J'ai arrêté mon service en amont, et je vois
[error] 2359#0: *25 connect() failed (111: Connection refused) while connecting to upstream
apparaissant dans les journaux. - J'essaie maintenant de faire en sorte que ma page d'erreur personnalisée s'affiche pour les erreurs 502.
- J'ai essayé de régler
error_page
à l'un ou l'autre ou aux deuxserver
olocation
bloc. - J'ai essayé
error_page
conproxy_intercept_errors on
dans lelocation
oserver
bloc ;
Aucun d'entre eux ne semble persuader nginx d'afficher ma page d'erreur. Pourquoi pas ? Qu'est-ce que j'ai raté ?