NGINX - Interceptar errores y personalizarlos
Aprende cómo interceptar y personalizar errores en NGINX para mejorar la experiencia del usuario. Este tutorial te muestra cómo configurar páginas de error personalizadas y manejar distintos códigos de estado.
🛠️ Configuración de Páginas de Error Personalizadas en NGINX
Para que NGINX muestre páginas de error propias en lugar de las que devuelve el servidor backend (o las predeterminadas), debes configurar varias directivas dentro de tu bloque server o location.
1. Interceptar los Errores del Backend
Abrimos el fichero de configuración .conf (dentro de tu bloque server o location) y añadimos la directiva proxy_intercept_errors on.
location / {
# Define el servidor backend al que se reenvían las peticiones
proxy_pass [http://xxx.xxx.xxx.xxx](http://xxx.xxx.xxx.xxx):xxxx/;
# ACTIVA la intercepción. NGINX captura los códigos de estado HTTP (4xx y 5xx)
# devueltos por el servidor proxy y evita que lleguen al cliente.
proxy_intercept_errors on;
}
2. Definición de las Páginas de Error
Una vez activada la intercepción, usamos la directiva error_page para redirigir los códigos de estado a nuestras páginas HTML personalizadas.
# Redirige el error 404 a la página /404.html
error_page 404 /404.html;
# Redirige todos los errores de servidor (50x) a la página /50x.html
error_page 500 502 503 504 /50x.html;
3. Servir las Páginas Personalizadas
Debemos definir las location para que NGINX sepa dónde encontrar los archivos y, crucialmente, añadir la directiva internal.
# Definición de la ubicación para la página 404
location = /404.html {
# Directorio donde se encuentra el archivo 404.html
root /var/www/nginx/errors/;
# IMPIDE que el cliente acceda a esta URL directamente.
# Solo NGINX puede redirigir internamente a esta ruta. (Seguridad)
internal;
}
# Definición de la ubicación para las páginas de error del servidor
location = /50x.html {
# Directorio donde se encuentra el archivo 50x.html
root /var/www/nginx/errors/;
# Solo NGINX puede redirigir a esta ruta.
internal;
}
4. Resumen de la Configuración Final
Asegúrate de que tus archivos 404.html y 50x.html existan en la ruta especificada (/var/www/nginx/errors/) y luego recarga NGINX:
sudo nginx -t
sudo systemctl reload nginx