Cómo instalar, configurar y optimizar Nginx en Ubuntu: Guía completa para principiantes

1. Introducción

Muchos usuarios están interesados en usar Nginx en Ubuntu, pero los principiantes pueden no saber por dónde empezar. Este artículo ofrece una explicación paso a paso, fácil de entender, desde la instalación de Nginx en Ubuntu hasta su configuración y gestión, incluso si no tienes experiencia previa.

¿Qué es Nginx?

Nginx (Engine‑X) es un servidor HTTP de alto rendimiento y un servidor proxy inverso. Gracias a su arquitectura ligera y flexible, es ampliamente utilizado en servidores web y aplicaciones en todo el mundo. Su estructura es particularmente adecuada para manejar entornos con mucho tráfico.

Ventajas de usar Nginx en Ubuntu

Ubuntu es una distribución Linux popular con excelente compatibilidad con Nginx. Como Ubuntu utiliza el sistema de gestión de paquetes APT, la instalación y las actualizaciones son sencillas, y puedes esperar una gran estabilidad y seguridad.

Después de leer este artículo, comprenderás:

  • Cómo instalar Nginx en Ubuntu
  • Procedimientos básicos de configuración y gestión
  • Técnicas de afinación de rendimiento y solución de problemas

Ahora, ¡comencemos!

2. Instalación de Nginx en Ubuntu

Para ejecutar Nginx en Ubuntu, debes instalarlo correctamente. Esta sección explica los pasos de instalación de forma clara y simple.

Verificar paquetes requeridos

Antes de instalar Nginx, asegúrate de que tu sistema esté actualizado. Ejecuta los siguientes comandos:

sudo apt update
sudo apt upgrade

Instalar Nginx

Para instalar Nginx, escribe el siguiente comando:

sudo apt install nginx

Este comando descarga e instala Nginx directamente desde el repositorio APT de Ubuntu.

Verificar la instalación

Ejecuta el siguiente comando para comprobar si Nginx se instaló correctamente:

sudo systemctl status nginx

Si el estado muestra active (running), la instalación fue exitosa.

Configurar el firewall

Ubuntu incluye UFW (Uncomplicated Firewall), que puedes usar para permitir el tráfico de Nginx.

sudo ufw allow 'Nginx Full'
sudo ufw enable

Nginx ya está listo para comunicarse a través del puerto 80 (HTTP) y el puerto 443 (HTTPS).

3. Configuración básica de Nginx en Ubuntu

Instalar Nginx solo no es suficiente; debes configurarlo adecuadamente para usarlo de forma eficaz.

Ubicación y estructura de los archivos de configuración

Nginx utiliza los siguientes archivos de configuración:

  • Archivo de configuración principal: /etc/nginx/nginx.conf
  • Archivos de configuración específicos de sitios: ubicados en el directorio /etc/nginx/sites-available/

Normalmente, creas archivos de host virtual en el directorio sites-available y luego creas enlaces simbólicos en el directorio sites-enabled para activarlos.

Configuración de un host virtual

Los hosts virtuales permiten que un solo servidor administre varios dominios y proyectos. El siguiente ejemplo configura example.com:

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

Introduce la configuración a continuación:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

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

Guarda el archivo y luego habilita la configuración:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Configuración de SSL/TLS

Para habilitar la comunicación segura, configura certificados SSL/TLS. Puedes obtener certificados gratuitos usando Let’s Encrypt.

Primero, instala certbot:

sudo apt install certbot python3-certbot-nginx

Luego, emite el certificado y aplica la configuración automáticamente:

sudo certbot --nginx -d example.com -d www.example.com

Asegúrate de que la renovación automática del certificado esté habilitada para evitar que caduque.

4. Iniciar y gestionar Nginx

Una vez que Nginx está instalado y configurado, necesitas aprender a iniciarlo, detenerlo, recargarlo y solucionar problemas. Esta sección explica los comandos administrativos esenciales.

Comandos básicos de Nginx

En Ubuntu, usa el comando systemctl para gestionar Nginx:

  1. Iniciar Nginx
    sudo systemctl start nginx
    
  1. Detener Nginx
    sudo systemctl stop nginx
    
  1. Reiniciar Nginx Usar cuando se realizan cambios importantes de configuración.
    sudo systemctl restart nginx
    
  1. Recargar Nginx Aplicar cambios de configuración sin reiniciar.
    sudo systemctl reload nginx
    
  1. Verificar el estado de Nginx
    sudo systemctl status nginx
    

Habilitar inicio automático

Para iniciar Nginx automáticamente después de reiniciar el sistema:

  1. Habilitar inicio automático
    sudo systemctl enable nginx
    
  1. Deshabilitar inicio automático
    sudo systemctl disable nginx
    

Revisar registros y solución de problemas

Si Nginx no funciona como se espera, revise los registros:

  1. Registro de errores
    sudo tail -f /var/log/nginx/error.log
    
  1. Registro de acceso
    sudo tail -f /var/log/nginx/access.log
    

Problemas comunes y soluciones

  1. Nginx no inicia
  • Causa: errores en el archivo de configuración
  • Solución: bash sudo nginx -t Verifique errores de sintaxis y corríjalos.
  1. Los cambios no se aplican
  • Causa: Nginx no se recargó
  • Solución: Run sudo systemctl reload nginx after changes.
  1. Puertos no abiertos
  • Causa: configuración del firewall
  • Solución: bash sudo ufw allow 'Nginx Full'

5. Configuración del firewall de Nginx y endurecimiento de seguridad

La seguridad es fundamental al operar Nginx. Esta sección explica cómo configurar UFW y reforzar la seguridad de Nginx.

Abrir puertos con UFW

UFW se instala por defecto en Ubuntu. Para habilitar la comunicación de Nginx, abra los puertos necesarios:

  1. Verificar el estado de UFW
    sudo ufw status
    
  1. Aplicar reglas de Nginx
    sudo ufw allow 'Nginx Full'
    
  1. Habilitar UFW
    sudo ufw enable
    

Mejoras de seguridad adicionales

  1. Desactivar métodos HTTP innecesarios
    if ($request_method !~ ^(GET|POST|HEAD)$) {
        return 444;
    }
    
  1. Desactivar listado de directorios
    autoindex off;
    
  1. Fortalecer SSL/TLS
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;
    

6. Ajuste de rendimiento y solución de problemas de Nginx

Nginx es conocido por su rendimiento, pero un ajuste adecuado puede mejorarlo aún más. Esta sección explica cómo optimizar recursos y resolver problemas comunes.

Ajuste de rendimiento

1. Configurar procesos de trabajo

Edite /etc/nginx/nginx.conf y optimice el número de procesos de trabajo:

worker_processes auto;

2. Incrementar conexiones de trabajo

worker_connections 1024;

3. Habilitar HTTP/2

listen 443 ssl http2;
sudo systemctl reload nginx

4. Habilitar compresión

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

5. Configurar caché

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
    expires 30d;
    access_log off;
}

Problemas comunes y soluciones

1. Solicitudes lentas bajo alta carga

  • Causa: configuración insuficiente de procesos o conexiones
  • Solución: ajuste los parámetros de los procesos o introduzca balanceo de carga

2. Error 403 Prohibido

  • Causa: ruta root incorrecta o permisos inadecuados
  • Solución:
  • Verifique la directiva root y corrija los permisos usando:
  • bash sudo chmod -R 755 /var/www/example.com/html sudo chown -R www-data:www-data /var/www/example.com/html

3. Tiempo de espera del servidor

  • Causa: el procesamiento de la solicitud del cliente lleva demasiado tiempo
  • Solución:
    proxy_read_timeout 300;
    proxy_connect_timeout 300;
    proxy_send_timeout 300;
    

4. Errores al reiniciar

  • Causa: problemas de sintaxis en la configuración
  • Solución:
    sudo nginx -t
    

7. Resumen y próximos pasos

Este artículo explicó cómo instalar, configurar y administrar Nginx en Ubuntu. Repasemos lo que ha aprendido y identifiquemos los posibles próximos pasos.

Revisión del artículo

1. Instalación de Nginx en Ubuntu

  • Preparó los paquetes necesarios y aprendió cómo instalar Nginx usando APT
  • Configuró el firewall (UFW) para permitir el tráfico de Nginx

2. Configuración básica

  • Conoció la ubicación de los archivos, la configuración de hosts virtuales y la configuración SSL/TLS

3. Operaciones de gestión

  • Dominó los comandos de iniciar, detener, reiniciar, recargar e investigar logs

4. Firewall y seguridad

  • Abrió los puertos requeridos usando UFW y deshabilitó métodos HTTP innecesarios

5. Optimización del rendimiento y solución de problemas

  • Optimizó los procesos de trabajo, habilitó HTTP/2, configuró el caché y resolvió problemas comunes

Próximos pasos

Ahora que comprende los pasos fundamentales de instalación y configuración de Nginx en Ubuntu, considere avanzar más:

  1. Aprender configuración avanzada de Nginx
  • Estudiar balanceo de carga y funciones de proxy inverso
  • Probar módulos adicionales como el módulo Nginx RTMP
  1. Mejorar la seguridad
  • Considerar la implementación de un firewall de aplicaciones web (WAF)
  1. Introducir automatización
  • Utilizar Ansible o Docker para automatizar la configuración y el despliegue
  1. Usar herramientas de monitoreo y optimización
  • Implementar Prometheus o Grafana para visualizar y monitorear el rendimiento

Reflexiones finales

Nginx es un servidor web rápido y flexible capaz de soportar una amplia gama de casos de uso cuando está configurado correctamente. Aplique lo que ha aprendido aquí a proyectos reales y continúe explorando funciones adicionales a través de la documentación oficial de Nginx y los recursos de la comunidad.

¡Espero que esta guía le ayude a gestionar su servidor web de manera más eficiente!