2009-08-19 8 views
8

Ocasionalmente, cuando intento abrir un sitio, veo una página que dice algo como "Este sitio está fuera de línea para mantenimiento" y luego siguen algunos comentarios sobre cuánto tiempo tomaría presumiblemente. Stack Overflow también lo hace.¿Cómo se implementa la página "Está fuera de línea para mantenimiento"?

¿Cómo funciona? Quiero decir, si el sitio está cerrado, ¿quién responde a mi solicitud HTTP y sirve esta página?

+0

Pregunta relacionada: http://stackoverflow.com/questions/756532/strategies-for-showing-a-nice-currently-offline-page-when-the-server-is-down – Spoike

Respuesta

18

Hay un truco en asp.net, donde se coloca un archivo llamado

App_Offline.htm 

Todas las solicitudes irán a este, hasta que se elimine la página.

Para otros entornos, a menudo solo puede cambiar el punto del servidor u otro plan similar.

- Editar

Un enfoque servidor agnóstica se logra a través de algo así como el equilibrio de carga.

Bajo el capó puede enviar las solicitudes a un servidor interno determinado. A continuación, puede decidir señalar todas las solicitudes a su servidor 'a', que configure para mostrar la página 'tiempo de inactividad'. Luego, realiza cambios en el servidor 'b', lo confirma como exitoso y señala todas las solicitudes a 'b'. Luego actualiza 'a' y deja que las solicitudes vayan a ambos.

11

En ASP.NET (y ASP.NET MVC como Stackoverflow utiliza) esto es proporcionado por app_offline.htm feature. Esto funciona simplemente reenviando todas las solicitudes ASP.NET al archivo app_offline.htm.

Por cierto, el copy Web Site tool en ASP.NET realiza el proceso de colocar este archivo en la raíz de la aplicación web, copia los archivos del sitio web y luego elimina este archivo.

Las estrategias para otras tecnologías son discussed here.

2

El servidor proxy inverso de apache se puede configurar para enviar esa respuesta, si se está utilizando como parte de esa arquitectura.

5

En apache puede usar un archivo .htacces con este contenido.

order deny,allow 
allow from 192.168.1.151 
deny from all 

ErrorDocument 403 404.html 
ErrorDocument 404 404.html 
ErrorDocument 500 404.html 

Esto denegará el acceso a todos excepto a una IP y servirá un archivo estático 404.html.

Esto funciona en el caso de que solo tenga un servidor sin equilibrio de carga y otras cosas. Aunque también debería funcionar para equilibrar la carga.

Cuestiones relacionadas