Mi Blog
👉 Cómo crear páginas de error en Nginx

Cómo crear páginas de error en Nginx

 
(10 votos)

Customizar las páginas de error de Nginx es muy sencillo. La personalización ó customización, hace que los errores "sean menos feos" y podamos ayudar al usuario final si tiene algún problema durante la navegación por nuestras Webs. El tutorial está basado en un sistema GNU/Linux, pero con pequeños cambios se puede adaptar a cualquier Sistema Operativo, Windows, MacOS, Unix etc...

Seguid leyendo y os enseñaré a crear páginas de error para el servidor Web Nginx...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES NGINX?

Nginx es un servidor web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3).

Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada; también existe una versión comercial distribuida bajo el nombre de Nginx Plus. Es multiplataforma, por lo que corre en sistemas tipo Unix (GNU/Linux, BSD, Solaris, Mac OS X, etc.) y Windows.6

El sistema es usado por una larga lista de sitios web conocidos,7 como: WordPress, Netflix, Hulu, GitHub, Ohloh, SourceForge, TorrentReactor y partes de Facebook (como el servidor de descarga de archivos zip pesados).

Características básicas del servidor web

  • Servidor de archivos estáticos, índices y autoindexado
  • Proxy inverso con opciones de caché
  • Balanceo de carga
  • Tolerancia a fallos
  • Soporte de HTTP y HTTP2 sobre SSL
  • Soporte para FastCGI con opciones de caché
  • Servidores virtuales basados en nombre y/o en dirección IP
  • Streaming de archivos FLV y MP4
  • Soporte para autenticación
  • Compatible con IPv6
  • Soporte para protocolo SPDY
  • Compresión gzip
  • Habilitado para soportar más de 10 000 conexiones simultáneas.

 

Características del proxy de correo

  • Proxy SMTP, POP3 e IMAP
  • Soporta STARTTLS
  • Soporta SSL

 

Web: https://www.nginx.com/

 

 

Nginx es un servidor web de alto rendimiento

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un PC con GNU/Linux (Debian/Ubuntu preferiblemente) y Nginx instalado
  • Conexión a Internet (o al menos red LAN)

 

 

2.- ERRORES WEB MÁS COMUNES

Los códigos de error de un servidor web se agrupan en varios grupos principales:

  • 1XX - Error informativo. Se ha recibido la solicitud
  • 2XX - Éxito. La acción requerida fue comprendida y tuvo éxito
  • 3XX - Se redirecciona y exige tomar acciones complementarias para completar la solicitud
  • 4XX - El error está en el lado del cliente. La solicitud muestra sintaxis incorrecta o no se puede cumplir
  • 5XX - El error está en el servidor, por lo que no se puede cumplir con una solicitud que, en apariencia, es válida

 

 

Dentro de los grupos anteriores, se pueden destacar los principales errores:

  • 204 - No content:  El servidor recibe nuestra petición, pero no encuentra el contenido solicitado.
  • 206 - Partial content:  El contenido es enviado a medias. Por lo general, con refrescar la página se soluciona este problema.
  • 301 - Moved Permanently:  El contenido ha sido movido permanentemente a otro lugar.
  • 302 - Moved temporarirly:  El contenido ha sido movido temporalmente a otro lugar.
  • 400 - Bad request:  La sintaxis de la solicitud es incorrecta.
  • 401 - Unauthorized:  El usuario ha usado datos de acceso que no son válidos.
  • 403 - Forbidden:  No es posible mostrar el contenido, generalmente por una falta de permisos o ausencia de la información en cuestión.
  • 404 - Not found:  El archivo solicitado no existe en ese servidor de Internet.
  • 500 - Server error:  Este puede ser tanto un error del servidor como de la programación del sitio web.
  • 503 - Out of resources:  Mensaje temporal que indica que el servidor está muy sobrecargado.
  • 505 - HTTP version not Supported:  Indica una versión anticuada del protocolo utilizado.

Existen muchos otros códigos de error, pero estos son los más frecuentes.

 

 

3.- CREAR UNA PÁGINA GENÉRICA PARA TODOS LOS ERRORES

Por defecto, cuando una página a la que intentamos acceder y no existe (error 404) en un servidor de Nginx, se nos muestra el siguiente error genérico en pantalla:

Página de error NginxPágina de error por defecto

 

 

Lo primero que tendremos que hacer será crear un fichero html llamado, por ejemplo, generic-error.html. Dicho html se mostrará cuando ocurra un determinado error con el contenido que queremos mostrar. Guardaremos el fichero en el directorio /var/www/html/, y si no existe, lo crearemos. En este ejemplo, crearemos un fichero html genérico de error muy, muy sencillo a modo de pruebas. A continuación dejo el código html de ejemplo con una página de error genérico:

<html>
<head>
<title>Ups!, Error!</title>
<style>
html {
text-align: center;
margin: 50px;
background-color: #e61919;
font-family:sans-serif;
color:#fff;
}
h1 {
font-size: 50px;
}
h2 {
font-size: 24px;
}
</style>
</head>
<body>
<h1>Ups, Error!</h1>
<h3>Prueba de nuevo</h3>
</body>
</html>

 

 

Una vez guardado el fichero de error en /var/www/html/generic-error.html, es momento de configurar NGINX para que, en caso de producirse un error tipo 400, 403, 500 etc...  se muestre al usuario final la página web creada para tal efecto. Para ello, ejecutaremos los siguientes comandos:

raul@debian:~$ sudo mkdir -p /etc/nginx/snippets/
raul@debian:~$ sudo nano /etc/nginx/snippets/generic-error.conf

 

 

Y dentro del fichero generic-error.conf, añadiremos el siguiente contenido:

error_page 401 404 403 500 503 /generic-error.html;
location = /error-page.html {
root /var/www/html;
internal;
}

 

 

Con esta configuración, conseguimos que cuando se produzca un error 401, 404, 403, 500 y 503, NGINX redireccione al usuario a la página URI/generic-error.html.

Ahora es necesario incluir el fichero generic-error.conf a la configuración de Nginx. Para ello, debemos incluir dentro de la sección server la siguiente línea en el fichero /etc/nginx/sites-available/default:

server {
...
include /etc/nginx/snippets/generic-error.conf;
}

 

 

Una vez hechos los cambios anteriores, comprobaremos la sintaxis de los ficheros y reiniciaremos Nginx. Una vez reiniciado Nginx, probaremos a acceder a una URL que no exista. De esta forma, provocaremos un sencillo error 404:

raul@debian:~$ sudo nginx -t
raul@debian:~$ sudo systemctl reload nginx

 

 

Página de error NginxPágina de error genérico personalizada

 

 

 

 

4.- CREAR DIFERENTES PÁGINAS PARA CADA ERROR

Aunque el proceso podemos hacerlo de forma totalmente manual, crear un fichero de error para cada uno de los códigos que queremos controlar, existen personas que han compartido plantillas de error para hacer uso de ellas de forma totalmente gratis y modificable a nuestro gusto. Por ejemplo, podemos utilizar las que están disponibles aquí: https://github.com/bartosjiri/nginx-errors

Para su "instalación", debemos seguir los siguientes pasos. Primero, debemos entrar en el directorio donde guardaremos los ficheros de error, en nuestro ejemplo /var/www/html/:

raul@debian:~$ cd /var/www/html/

 

 

Los errores personalizados al descargar los ficheros serán los siguientes:

400.html
401.html
402.html
403.html
404.html
405.html
406.html
407.html
408.html
409.html
410.html
411.html
412.html
413.html
414.html
415.html
416.html
417.html
418.html
421.html
422.html
423.html
424.html
425.html
426.html
428.html
429.html
431.html
451.html
500.html
501.html
502.html
503.html
504.html
505.html
506.html
507.html
508.html
510.html
511.html

 

 

A continuación, haciendo uso del comando git, clonaremos el repositorio con el siguiente comando:

raul@debian:/var/www/html$ sudo git clone https://github.com/bartosjiri/nginx-errors.git

 

 

Ahora, añadiremos el fichero de configuración de errores en el fichero de configuración por defecto de nuestro "sitio", en concreto, añadiremos la siguiente línea en /etc/nginx/sites-available/default:

server {
...
include /var/www/html/nginx-errors/nginx-errors.conf;
}

 

 

Debemos revisar el path que hay configurado en el fichero nginx-errors.conf, y asegurarnos que apuntan a /var/www/html/ y /var/www/html/nginx-errors/ (o donde tengamos los ficheros descargados) en lugar de /usr/share/...

 

 

Una vez hechos los cambios anteriores, comprobaremos la sintaxis de los ficheros y reiniciaremos Nginx. Una vez reiniciado Nginx, probaremos a acceder a una URL que no exista. De esta forma, provocaremos un sencillo error 404:

raul@debian:~$ sudo nginx -t
raul@debian:~$ sudo systemctl reload nginx

 

  

Página de error NginxPágina de error personalizado en Nginx

 

 

ENJOY!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!
AVISO DE COOKIES

Esta página web utiliza cookies propias y de terceros para fines funcionales (permitir la navegación web), para optimizar la navegación y personalizarla según tus preferencias asícomo para mostrarte publicidad en base a tu perfil de navegación (p.e páginas visitadas).

Privacidad