NGINX - Interceptar errores y personalizarlos

NGINX - Interceptar errores y personalizarlos
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