Cómo instalar Nginx en Debian 12, 11 o 10

Nginx es un potente servidor web conocido por su alto rendimiento y bajo consumo de recursos. Diseñado originalmente para manejar el problema C10k, se destaca en la entrega de contenido estático, equilibrio de carga y proxy inverso. La combinación de Nginx con Debian, conocido por su estabilidad y seguridad, da como resultado un entorno de servidor robusto y confiable.

Características clave de Nginx:

  • Alto rendimiento: Maneja eficientemente múltiples conexiones simultáneas.
  • Bajo uso de recursos: Optimizado para ejecutarse con memoria y CPU mínimas.
  • Balanceo de carga: Distribuye el tráfico entre múltiples servidores para mejorar el rendimiento.
  • Proxy inverso: Reenvía las solicitudes de los clientes a los servidores backend sin problemas.
  • Manejo de contenido estático: Sirve archivos estáticos de forma rápida y eficiente.
  • Características de seguridad: Admite SSL/TLS para comunicaciones cifradas.
  • Flexibilidad: Admite protocolos como HTTP, HTTPS, SMTP, POP3 e IMAP.

Beneficios de combinar Nginx con Debian:

  • Estabilidad: La reputación de estabilidad de Debian garantiza que su servidor siga siendo confiable.
  • Seguridad: Las sólidas medidas de seguridad de Debian protegen su servidor Nginx de vulnerabilidades.
  • Facilidad de uso: El sistema de gestión de paquetes de Debian simplifica la instalación y el mantenimiento de Nginx.
  • Soporte comunitario: Nginx y Debian tienen comunidades sólidas que brindan amplios recursos y soporte.

Al realizar la transición a la configuración, descubrirá que la estabilidad de Debian combina perfectamente con la eficiencia de Nginx, creando un entorno ideal para sus aplicaciones web. Profundicemos en los pasos necesarios para instalar y configurar Nginx en un servidor Debian.

Preparando su sistema antes de la instalación de Nginx

Asegúrese de que su sistema esté actualizado antes de instalar Nginx. Esto evita posibles conflictos durante la instalación y reduce el riesgo de problemas de compatibilidad y vulnerabilidades de seguridad.

Para actualizar los paquetes de su sistema, ejecute lo siguiente:

sudo apt update && sudo apt upgrade

Este comando recupera la lista de actualizaciones disponibles (a través de apt update) y luego actualiza los paquetes de software actuales a sus últimas versiones (usando apt upgrade).

Instale el estándar NGINX 'Web Server'

De forma predeterminada, NGINX está disponible en los repositorios de Debian. Esto hace que el proceso de instalación sea sencillo.

Ejecute el siguiente comando para instalar nginx:

sudo apt install nginx

El apt install El comando le dice a la utilidad de manejo de paquetes APT (una parte del sistema Debian) que instale el paquete NGINX.

Opcional: instale la versión completa de NGINX

NGINX ofrece una nginx-full Versión con módulos adicionales que no se encuentran en la versión estándar. Si necesita más funciones, instale la versión completa de nginx:

sudo apt install nginx-full

Opcional: instale la versión NGINX-Extras

Para un conjunto de características aún más amplio, considere el nginx-extras versión. Instalar:

sudo apt install nginx-extras

Verificación de la instalación de NGINX

Después de la instalación, asegúrese de que NGINX se esté ejecutando correctamente.

Verifique el estado del servicio NGINX con lo siguiente:

systemctl status nginx

NGINX funciona correctamente si la salida muestra "activo (en ejecución)". De lo contrario, el resultado detallará el error para solucionar el problema.

Si NGINX no está habilitado, use:

sudo systemctl enable nginx --now

Configurar el cortafuegos UFW para Nginx

UFW, o Uncomplicated Firewall, proporciona una interfaz fácil de usar para administrar las reglas del firewall de iptables. No está instalado en Debian de forma predeterminada, pero puede obtenerlo desde los repositorios predeterminados. Si su servidor tiene acceso público, debe configurar reglas UFW por seguridad.

Instalar cortafuegos UFW

Si UFW aún no está instalado en su sistema, puede hacerlo ejecutando el siguiente comando:

sudo apt install ufw

Habilitar el cortafuegos UFW

Una vez que se completa la instalación, puede habilitar UFW ejecutando el siguiente comando:

sudo ufw enable

La configuración predeterminada de UFW bloquea todas las conexiones entrantes y permite todas las salientes. Esto significa que detiene el acceso no solicitado al sistema pero permite que su sistema llegue al mundo exterior.

Listado de aplicaciones instaladas

UFW utiliza perfiles de aplicación, que son conjuntos de reglas para aplicaciones específicas. Para ver las aplicaciones instaladas que tienen perfiles UFW, ejecute:

sudo ufw app list

Configuración de reglas UFW para NGINX

Dependiendo de sus necesidades, puede configurar UFW para permitir conexiones NGINX a través de HTTP (puerto 80), HTTPS (puerto 443) o ambos.

Solo para HTTP (puerto 80):

sudo ufw allow 'Nginx HTTP'

HTTPS (puerto 443) únicamente:

sudo ufw allow 'Nginx HTTPS'

Tanto HTTP como HTTPS:

sudo ufw allow 'Nginx Full'

Verificación de reglas de firewall

Para confirmar que sus reglas estén implementadas, verifique las reglas de firewall activas:

sudo ufw status

Prueba de configuración de NGINX

Después de configurar UFW, asegúrese de poder ver la página de inicio de NGINX. En su navegador, vaya a la dirección IP de su servidor:

http://your_server_ip

O, para configuraciones locales:

http://localhost

Supongamos que ve la página predeterminada de NGINX; tu configuración funciona. Esto finaliza la configuración del firewall para NGINX en Debian.

Crear bloques de servidor NGINX

Al igual que los hosts virtuales de Apache, los bloques de servidores NGINX le permiten alojar múltiples dominios desde un servidor. Cada dominio tiene sus ajustes de configuración. Para esta guía, reemplace "ejemplo.com" con su nombre de dominio real.

Cree un directorio para su dominio

Configure un directorio para su dominio. Este directorio almacenará los archivos de su sitio web:

sudo mkdir -p /var/www/example.com/

Asignar propiedad al directorio Nginx

Asigne la propiedad del directorio al usuario y grupo "www-data", que NGINX suele utilizar:

sudo chown -R www-data:www-data /var/www/example.com/

Crear una página HTML de prueba de Nginx

Cree una página HTML de prueba en el directorio de su dominio para confirmar su configuración de NGINX:

sudo nano /var/www/example.com/index.html

Agregue el siguiente código HTML:

<html>
 <head>
  <title>Welcome to Example.com</title>
 </head>
 <body>
   <h1>Success! The NGINX server block is working!</h1>
 </body>
</html>

Después de haber pegado el código en el editor nano, presione CTRL+O para guardar los cambios y luego CTRL+X para salir del editor.

Crear un bloque de servidor NGINX para la página de prueba

Configure un bloque de servidor para su sitio web:

sudo nano /etc/nginx/sites-available/example.com.conf

Agregue la siguiente configuración:

server {
 listen 80;
 listen [::]:80;

 root /var/www/example.com/;
 index index.html index.htm index.nginx-debian.html;

 server_name example.com www.example.com;

 location / {
  try_files $uri $uri/ =404;
 }
}

Esta configuración le dice a NGINX que escuche las conexiones entrantes en el puerto 80 para ambos example.com y www.example.com. Asegúrese de reemplazar el root directiva con la ruta del directorio que creó anteriormente.

Habilite el bloque del servidor NGINX mediante un enlace simbólico

Habilite el bloque de su servidor creando un enlace simbólico desde el directorio de sitios disponibles al directorio de sitios habilitados:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Configuración final y ejecución de prueba

Por último, editaremos el archivo de configuración predeterminado de NGINX y realizaremos una ejecución de prueba para garantizar que todo funcione como se esperaba.

Editar el archivo de configuración de NGINX

Abre el nginx.conf archivo:

sudo nano /etc/nginx/nginx.conf

busca la linea server_names_hash_bucket_size 64; dentro de http {} bloquearlo y descomentarlo.

Esta directiva permite a NGINX manejar nombres de dominio largos y números más significativos de nombres de servidores asignando más memoria para este propósito. Sin embargo, tenga cuidado de no establecer este valor demasiado alto, ya que podría consumir más memoria de la necesaria.

Guarde los cambios y salga del editor presionando CTRL+O y CTRL+X.

Pruebe su configuración NGINX

Antes de continuar y reiniciar NGINX, es una buena práctica verificar que la sintaxis de configuración sea correcta. Ejecute el siguiente comando para iniciar una ejecución de prueba:

sudo nginx -t

Si su configuración es correcta, verá este resultado:

nginx: la sintaxis del archivo de configuración /etc/nginx/nginx.conf es correcta nginx: la prueba del archivo de configuración /etc/nginx/nginx.conf fue exitosa

Estos mensajes indican que su configuración de NGINX se ha validado correctamente.

Verificando el bloque de su servidor

Para garantizar que el bloque de su servidor funcione correctamente, abra su dominio en un navegador web. Deberías ver la página de prueba que confirma que el bloqueo de tu servidor está activo.

Comandos adicionales de Nginx

Mejora de la seguridad de los archivos en su servidor web

La seguridad de los archivos y carpetas de su servidor web es primordial. Evite derechos de acceso demasiado permisivos. Utilice estos comandos para establecer los permisos correctos para todos los archivos y directorios en su webroot.

Recuerde reemplazar /var/www/example.com/ con su ruta webroot:

sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;

Estos comandos establecen permisos de lectura y ejecución para directorios y permisos de lectura y escritura para archivos para el propietario. Los grupos y otros obtienen acceso de solo lectura. Ajuste estos permisos según lo requiera su aplicación.

Seguridad de Nginx con el certificado SSL gratuito Let's Encrypt

El uso del protocolo HTTPS garantiza la seguridad del servidor web. Let's Encrypt proporciona un certificado SSL gratuito. Instale el paquete certbot con:

sudo apt install python3-certbot-nginx

Luego, inicie la creación del certificado:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Reemplace con su correo electrónico y nombre de dominio. Este comando configura HTTPS con las características de seguridad requeridas.

Configurar la renovación automática de certificados

Los certificados Let's Encrypt tienen una duración de 90 días. Configure renovaciones automáticas con el script Certbot. Pruebe el proceso:

sudo certbot renew --dry-run

Si tiene éxito, agregue el comando de renovación a crontab:

sudo crontab -e

Incluye esta línea para renovar diariamente a medianoche:

00 00 */1 * * /usr/sbin/certbot-auto renew

Registros del servidor Nginx

Supervise los registros de su servidor para obtener un servidor web en buen estado. De forma predeterminada, los registros residen en /var/log/nginx. Listarlos con:

cd /var/log/nginx && ls -l

Los archivos de registro más relevantes son los access.log y error.log. Para monitorear registros en tiempo real, use el tail -f comando seguido de la ruta al registro:

tail -f /var/log/nginx/access.log

Actualizar Nginx

Antes de actualizar su servidor Nginx, es aconsejable crear una copia de seguridad de sus configuraciones actuales. Para hacer una copia de seguridad de su principal nginx.conf archivo, use el siguiente comando:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

En los casos en los que haya personalizado ampliamente su configuración de Nginx, es posible que desee hacer una copia de seguridad de todo su directorio de Nginx:

sudo cp -r /etc/nginx/ /etc/nginx-bkup

Con una copia de seguridad de sus configuraciones de forma segura, ahora puede proceder a actualizar Nginx:

sudo apt update
sudo apt upgrade

Es una buena práctica realizar copias de seguridad periódicas de sus configuraciones, especialmente en configuraciones complejas.

Quitar Nginx

Si ya no necesita Nginx en su servidor, puede eliminarlo siguiendo estos pasos. Primero, asegúrese de que el servicio Nginx esté detenido:

sudo systemctl disable nginx --now

A continuación, elimine por completo el paquete Nginx:

sudo apt remove nginx

Es posible que aún encuentre restos de configuraciones de Nginx en el /etc/nginx directorio. Para eliminarlos, use el comando:

sudo rm -R /etc/nginx/

Recuerde que esto eliminará todos sus archivos de configuración personalizados, así que asegúrese de tener una copia de seguridad de todo lo que necesita antes de continuar con este paso.

Configurar los parámetros de rotación de registros en Nginx

Nginx incluye una función de rotación diaria de registros de forma predeterminada. Sin embargo, puede personalizar estas configuraciones según sus necesidades.

Acceder al archivo de configuración para la rotación de registros

Para modificar la configuración de rotación de registros, debe acceder al archivo de configuración. Así es como puedes abrirlo usando el editor de texto nano:

sudo nano /etc/nginx/logrotate.d/nginx

Una vez que abra el archivo, verá contenido similar al siguiente. Ajuste las directivas de este archivo para que se ajusten a sus necesidades de retención y rotación de registros, principalmente si utiliza herramientas de monitoreo como fail2ban.

Archivo de configuración de rotación de registros de muestra

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

Comprensión de los parámetros de configuración principales

Dentro de esta configuración, los administradores del sistema normalmente se centran en dos configuraciones principales:

  1. A diario: Esta configuración establece la frecuencia de rotación del registro. Si bien el valor predeterminado es "diario", puedes cambiarlo a "semanal" o "mensual". Sin embargo, las rotaciones diarias suelen simplificar la gestión de registros.
  2. Girar 14: este número le indica al sistema cuántos archivos de registro debe conservar. Por ejemplo, una configuración de '14' conserva los 14 registros más recientes. Si desea almacenar solo una semana de registros, ajuste este número a '7'.

Si bien Nginx te permite modificar otras configuraciones, haz siempre los cambios con cuidado. Cambiar la configuración sin comprender su impacto puede provocar resultados inesperados. Asegúrese de modificar estas configuraciones para adaptarlas a sus necesidades sin causar problemas no deseados.

Recuerde, no existe un enfoque único para la gestión de registros. Evalúe siempre su entorno y requisitos específicos antes de realizar cambios.

Pensamientos finales

En esta guía, explicamos la configuración de Nginx en Debian, abarcando la instalación, configuración y optimización básica. Al combinar la eficiencia de Nginx con la estabilidad de Debian, ha creado una base sólida para su servidor web. Recuerde mantener su servidor actualizado y explorar módulos Nginx adicionales para obtener una funcionalidad mejorada. Si tiene algún problema, las sólidas comunidades en torno a Debian y Nginx siempre son excelentes recursos. ¡Gracias por seguirnos y feliz hospedaje!

Joshua James
Sígueme
Últimas entradas de Joshua James (ver todo)

Deja un comentario