Solución:
Solución 1:
Esto es lo que hago.
if (-f $document_root/maintenance.html) {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
Si el archivo está allí, mostrará la página de mantenimiento. Una vez que elimine el archivo, volverá a la normalidad.
Solucion 2:
Creo que la mejor práctica sería devolver un código de estado 500.
Creo que te refieres a 503 en lugar de 500.
ellos usan
if
para realizar la redirección y, de acuerdo con la documentación de nginx, no es seguro usar ifs.
No solo return
es 100% seguro dentro if
en location
contexto.
De acuerdo con la documentación de nginx, puede especificar un código de estado HTTP como último argumento para try_files
. Intenté esto pero no funcionó.
Solución 3:
Sí, es importante utilizar HTTP 503 para temp. redireccionamientos. Esa es la forma en que lo resolví:
server {
listen 80;
server_name joergfelser.at;
root /var/www/joergfelser.at/;
location / {
if (-f $document_root/maintenance.html) {
return 503;
}
... # rest of your config, it's important to have
... # the maintenance case at the very top
}
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
}
También escribí una publicación de blog sobre ese tema:
https://www.joergfelser.at/redirecting-to-a-custom-nginx-maintenance-page/
Feliz mantenimiento;)