Je dois renvoyer un code d'état 503 depuis l'un de mes sites pendant qu'il est en panne pour maintenance, de la manière séculaire SE_firendly. Je n'arrive pas à trouver comment faire cela sans invoquer des scripts externes, ce que je préfère éviter.
Existe-t-il une directive apache qui me permettra de renvoyer un code d'état HTTP arbitraire sans recourir à des hacks comme invoquer un script php qui définit l'en-tête d'état?
apache-2.2
http
seo
dan mackinlay
la source
la source
Réponses:
Cela sert à chaque demande une page d'attente statique avec le statut 503.
RedirectMatch est utilisé pour annuler la page de garde elle-même, ce qui sinon créerait une boucle infinie.
mod_header est utilisé pour définir un en-tête Retry-After afin que vous puissiez dire à Google / autres bots, etc. que vous devez sauvegarder après 18000 secondes (5 heures) dans cet exemple. Vous pouvez
sudo ap2enmod header
activer mod_header (qui est requis pour la directive Header).la source
RedirectMatch 503 ^/(?!\.Error/.*|dragonlord-bg\.jpg)
.Essayer
Depuis http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect :
Remarque supplémentaire: Cela affichera le document d'erreur par défaut / configuré pour l'erreur 503.
la source
Redirect 503 /
semble fonctionner.Pour rendre votre mode de maintenance plus flexible, définissez 503 lorsqu'un fichier spécial existe, ala:
REMARQUE: l'emplacement de DOCUMENT_ROOT peut différer entre httpd 2.2 et 2.4
De cette façon, tout ce que vous devez faire est de "toucher /path/to/docroot/.maintenance" et votre site commencera instantanément à renvoyer des 503. Ensuite, pour tout faire, créez une page d'erreur html bien formatée et ajoutez-la au fichier de configuration du serveur apache correct:
Et pour les points bonus si vous avez plusieurs serveurs Web, faites l'emplacement de .maintenance sur un système de fichiers partagé, ou pour encore plus de points bonus:
pdsh -w $web1_ip,$web2_ip,$web3_ip "sudo touch /path/to/docroot/.maintenance"
L'avantage de créer le fichier du mode de maintenance est qu'il fonctionne lorsque votre application ne fonctionne pas, c'est simple et rapide, et il est plus facile à gérer pour un proxy de mise en cache frontal car vous pouvez gérer tous les backends 503 d'un seul coup.
Sources:
la source