Necesito devolver un código de estado 503 de uno de mis sitios mientras está fuera de servicio por mantenimiento, de la manera tradicional SE_firendly. Parece que no puedo resolver cómo hacer esto sin invocar scripts externos, lo que prefiero evitar.
¿Existe una directiva de apache que me permita devolver un código de estado HTTP arbitrario sin recurrir a hacks como invocar un script php que establece el encabezado de estado?
apache-2.2
http
seo
dan mackinlay
fuente
fuente
Respuestas:
Esto sirve a cada solicitud de una página de retención estática junto con el estado 503.
RedirectMatch se utiliza para negar la página de retención en sí misma que de lo contrario crearía un bucle infinito.
mod_header se usa para configurar un encabezado Retry-After para que pueda decirle a Google / otros bots, etc. que debe hacer una copia de seguridad después de 18000 segundos (5 horas) en este ejemplo. Puede
sudo ap2enmod header
activar mod_header (que se requiere para la directiva Header).fuente
RedirectMatch 503 ^/(?!\.Error/.*|dragonlord-bg\.jpg)
.Tratar
De http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect :
Nota adicional: Esto mostrará el ErrorDocument predeterminado / configurado para el Error 503.
fuente
Redirect 503 /
parece funcionar.Para hacer que su modo de mantenimiento sea más flexible, configure 503 cuando exista un archivo especial, ala:
NOTA: La ubicación de DOCUMENT_ROOT puede diferir entre httpd 2.2 y 2.4
De esta manera, todo lo que necesita hacer es "touch /path/to/docroot/.maintenance" y su sitio comenzará a devolver 503 instantáneamente. Luego, para que todo esté en orden, cree una página de error html bien formateada personalizada y agréguela al archivo de configuración del servidor apache correcto:
Y para obtener puntos de bonificación si tiene varios servidores web, haga la ubicación de .maintenance en un sistema de archivos compartido o para obtener aún más puntos de bonificación:
pdsh -w $web1_ip,$web2_ip,$web3_ip "sudo touch /path/to/docroot/.maintenance"
La ventaja de hacer que el archivo de modo de mantenimiento se base es que funciona cuando su aplicación no lo hace, es rápido y simple, y es más fácil de manejar para un proxy de almacenamiento en caché de la interfaz porque puede manejar todos los 503 del backend de una sola vez.
Fuentes:
fuente