Je suis au service de mon application FastCGI dans Apache2 en utilisant le serveur FastCGI autonome et la directive FastCgiExternalServer. Lorsque je redémarre mon application FastCGI, mes utilisateurs reçoivent une erreur 500. Que puis-je faire pour éviter cela? Je veux leur montrer une belle page de «maintenance» ou quelque chose comme ça. C'est une application Catalyst écrite en Perl et j'ai suivi l'exemple here mais j'ai trouvé qu'un 500 est servi et pas une mauvaise passerelle 502 donc je ne peux pas sélectionner quelle erreur afficher. Je ne veux pas diffuser une page de maintenance pour une erreur de serveur interne légitime.Comment puis-je afficher une page de maintenance lorsque mon application FastCGI redémarre?
1
A
Répondre
2
Vos seuls choix réels sont
- Utilisez
ErrorDocument 500
et concevoir une page qui convient à l'autre situation, ou - Hack/fix mod_fastcgi pour revenir un 502 au lieu de 500 comme la sagesse populaire pense qu'il devrait .
Le développement de mod_fastcgi est très lent, mais pas complètement mort, donc vous pouvez toujours essayer d'envoyer ce patch en amont; Si cela était accepté, cela serait apprécié. :)
1
Merci Hobbs,
J'ai pris vos conseils et créé un fichier de patch. Cela fonctionne pour moi. Je sais que c'est une vieille question, mais cela m'a aidé, j'espère que cela aidera les autres.
--- mod_fastcgi-SNAP-0910052141/mod_fastcgi.c 2008-11-09 07:31:03.000000000 -0700
+++ mod_fastcgi-SNAP-BadGateway/mod_fastcgi.c 2012-06-01 10:42:48.497212761 -0600
@@ -1670,7 +1670,7 @@
if (open_connection_to_fs(fr) != FCGI_OK)
{
ap_kill_timeout(r);
- return HTTP_INTERNAL_SERVER_ERROR;
+ return HTTP_BAD_GATEWAY;
}
is_connected = 1;
@@ -2079,7 +2079,7 @@
if (open_connection_to_fs(fr) != FCGI_OK)
{
ap_kill_timeout(r);
- return HTTP_INTERNAL_SERVER_ERROR;
+ return HTTP_BAD_GATEWAY;
}
set_nonblocking(fr, TRUE);
@@ -2387,6 +2387,11 @@
{
sink_client_data(fr);
}
+
+ //if we failed to connect to FastCGI Server, return error now. Do not try to parse headers
+ if (rv == HTTP_BAD_GATEWAY) {
+ return rv;
+ }
while (rv == 0 && (BufferLength(fr->serverInputBuffer) || BufferLength(fr->clientOutputBuffer)))
{
Questions connexes
- 1. Comment déboguer une application fastcgi?
- 2. Mon application redémarre l'iPhone sur iOS 4.1
- 3. Comment configurer une page à afficher lorsque le serveur est en maintenance planifiée dans Jboss?
- 4. Comment afficher la page de maintenance pendant le déploiement?
- 5. comment faire autostart lorsque le système redémarre
- 6. IPhone: Pourquoi mon application reprend-elle et ne redémarre pas lorsque je la relance sur l'appareil?
- 7. Afficher une page Web personnalisée lorsque applicatino est arrêté
- 8. Soyez alerté lorsque SystemUIServer redémarre
- 9. Comment afficher automatiquement une page de notification lorsque le serveur Web principal ne répond plus?
- 10. Personnalisation "en cours de maintenance" page
- 11. Session Maintenance for Login Page
- 12. Comment afficher les erreurs de mon application dans JSF?
- 13. Pourquoi mon script simple fastCGI Perl échoue?
- 14. Afficher l'image de mon serveur Web à mon application iPhone
- 15. Code d'état correct pour une redirection de page de maintenance?
- 16. Comment afficher une application dans Application Loader?
- 17. Maintenance d'une liste d'objets sur une page JSP
- 18. Afficher une page Web simple dans mon application avec Blackberry BrowserField
- 19. une question liée à la maintenance d'état
- 20. Comment afficher la photo de contact dans mon application?
- 21. Comment afficher et afficher une autre page lorsque l'utilisateur survole le lien?
- 22. Comment puis-je afficher une page "temporairement hors service" pour les utilisateurs d'applications Web pendant la maintenance?
- 23. Comment ouvrir un fichier avec mon application? (Lorsque mon application est en arrière-plan)
- 24. Comment afficher une div lorsque l'utilisateur fait défiler une quantité fixe dans une page?
- 25. Maintenance automatisée du serveur Apache Page
- 26. L'activité de l'application Android redémarre toujours
- 27. Comment afficher mon application Silverlight après le chargement des données?
- 28. Comment afficher un UIProgressView pour un téléchargement dans mon application?
- 29. Comment afficher du code HTML dans une application WPF?
- 30. comment afficher les fichiers * .mpp dans mon application iphone?
Je pensais autant. Cela peut fonctionner car je pense que je peux utiliser Catalyst pour capturer les erreurs d'application et afficher une page d'erreur plus appropriée. – cubabit