Je voudrais configurer mon serveur nginx pour qu'il renvoie une page d'erreur spécifique sur les codes d'état HTTP 50x, et je voudrais que cette page soit indisponible par une demande directe des utilisateurs (par exemple, http//mysite/internalerror).
Pour cela, j'utilise la fonction de nginx internal
mais je dois rater quelque chose, car lorsque je place cette directive dans mon fichier /internalerror
nginx renvoie une erreur 404 personnalisée (qui n'est même pas ma propre page d'erreur 404) lorsqu'une page se ferme.
Donc, pour résumer, voici ce qui semble se passer :
- GET /Home
- nginx transmet la requête à Python
- Je simule un bug d'application pour obtenir le code d'erreur 502
- nginx essaie de renvoyer /InternalError à partir de ses
error_page
règle - en raison de la
internal
il échoue finalement sur un code d'erreur 404 personnalisé. <-- pourquoi ? la documentation diterror_page
ne sont pas concernées par les directivesinternal
: http://wiki.nginx.org/HttpCoreModule#internal
Voici un extrait de nginx.conf avec quelques commentaires pour préciser les choses :
error_page 404 /NotFound;
error_page 500 502 503 504 =500 /InternalError; # HTTP 500 Error page declaration
location / {
try_files /Maintenance.html $uri @pythonbackend;
}
location @pythonbackend {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
location ~* \.(py|pyc)$ { # This internal location works OK and returns my own 404 error page
internal;
}
location /__Maintenance.html { # This one also works fine
internal;
}
location ~* /internalerror { # This one doesn't work and returns nginx's 404 error page when I trigger an error somewhere on my site
internal;
}
Merci beaucoup pour votre aide !