Objetivo de este capítulo
Aprenderás a instalar Nginx en Linux en dos familias de distribuciones (Debian/Ubuntu y RHEL/CentOS/Fedora), a operar el servicio con systemd (iniciar, detener, reiniciar y recargar), a verificar estado y puertos en escucha, y a ubicar archivos clave (configuración y logs). Al final harás un laboratorio para validar la instalación con curl o navegador y leer access.log y error.log.
Instalación en Debian/Ubuntu (APT)
1) Actualizar índices de paquetes
sudo apt update2) Instalar Nginx desde repositorios de la distribución
Esta es la instalación “típica” y más simple. El paquete suele llamarse nginx.
sudo apt install -y nginx3) Verificar versión instalada
nginx -vNotas sobre repositorios y paquetes en Debian/Ubuntu
- Repositorio por defecto: el paquete
nginxproviene de los repositorios oficiales de tu distribución. Suele ser estable y bien integrado con el sistema. - Variantes de paquete: en algunas versiones puedes ver metapaquetes o builds alternativos, pero el flujo básico para principiantes es
apt install nginx.
Instalación en RHEL/CentOS/Fedora (DNF/YUM)
1) Elegir el gestor de paquetes
En Fedora y RHEL modernos se usa dnf. En sistemas antiguos puedes encontrar yum. Los comandos son equivalentes en lo esencial.
2) Instalar Nginx
sudo dnf install -y nginxSi tu sistema usa yum:
sudo yum install -y nginx3) Habilitar repositorios cuando Nginx no aparece
En algunas variantes (especialmente RHEL/CentOS), Nginx puede estar en repositorios adicionales. Si dnf no encuentra el paquete, revisa primero qué repositorios están activos:
- Escuche el audio con la pantalla apagada.
- Obtenga un certificado al finalizar.
- ¡Más de 5000 cursos para que explores!
Descargar la aplicación
sudo dnf repolistEn RHEL, un origen común es AppStream (según versión). En CentOS/Rocky/Alma, puede depender de repos habilitados por defecto. Si tu entorno requiere un repositorio extra, sigue la guía oficial de tu distribución para habilitarlo (esto varía por versión y política de la organización).
4) Verificar versión instalada
nginx -vGestión del servicio con systemd
En la mayoría de distribuciones modernas, Nginx se gestiona como un servicio de systemd llamado nginx. La diferencia práctica entre reiniciar y recargar es importante: reload aplica cambios de configuración sin cortar conexiones activas (cuando es posible), mientras que restart reinicia el proceso y puede interrumpir conexiones.
Comandos básicos
| Acción | Comando | Uso típico |
|---|---|---|
| Iniciar | sudo systemctl start nginx | Arrancar el servicio |
| Detener | sudo systemctl stop nginx | Parar Nginx |
| Reiniciar | sudo systemctl restart nginx | Aplicar cambios “a lo bruto” |
| Recargar | sudo systemctl reload nginx | Aplicar cambios sin reinicio completo |
| Habilitar al arranque | sudo systemctl enable nginx | Arrancar en boot |
| Deshabilitar al arranque | sudo systemctl disable nginx | No arrancar en boot |
Verificar estado y diagnósticos rápidos
Para ver si está activo y si hubo errores recientes:
sudo systemctl status nginxPara ver logs del servicio vía journal (útil si Nginx no inicia):
sudo journalctl -u nginx --no-pager -n 100Verificar puertos en escucha
Por defecto, Nginx suele escuchar en el puerto 80 (HTTP). Si configuraste TLS más adelante, también será común el 443 (HTTPS).
Con ss (recomendado)
sudo ss -lntp | grep -E ':80|:443'Con lsof (si está disponible)
sudo lsof -iTCP -sTCP:LISTEN -P | grep -E ':(80|443)\b'Si el puerto 80 ya está ocupado por otro servicio, Nginx puede fallar al iniciar. En ese caso, identifica el proceso que escucha en :80 y decide si debes detenerlo o cambiar el puerto de Nginx.
Rutas comunes: configuración y logs
Las rutas exactas pueden variar ligeramente, pero estas son las más habituales.
Debian/Ubuntu
- Configuración principal:
/etc/nginx/nginx.conf - Bloques de servidor:
/etc/nginx/sites-available/y/etc/nginx/sites-enabled/ - Configuración adicional:
/etc/nginx/conf.d/ - Logs:
/var/log/nginx/access.logy/var/log/nginx/error.log - Raíz web típica:
/var/www/html(puede variar según el sitio por defecto)
RHEL/CentOS/Fedora
- Configuración principal:
/etc/nginx/nginx.conf - Configuración adicional:
/etc/nginx/conf.d/(muy común en esta familia) - Logs:
/var/log/nginx/access.logy/var/log/nginx/error.log - Raíz web típica:
/usr/share/nginx/html(frecuente en instalaciones por defecto)
Cómo confirmar qué archivos está usando Nginx
Para validar la ruta del archivo de configuración principal y opciones compiladas:
nginx -V 2>&1 | tr ' ' '\n' | grep -E 'conf-path|error-log-path|http-log-path|prefix'Para probar sintaxis antes de recargar:
sudo nginx -tSi el test es correcto, recarga:
sudo systemctl reload nginxLaboratorio guiado: levantar Nginx, comprobar respuesta y leer logs
Parte A: Arrancar y habilitar el servicio
Instala Nginx según tu distribución (APT o DNF/YUM).
Inicia el servicio:
sudo systemctl start nginxComprueba el estado:
sudo systemctl status nginx(Opcional) Habilita el arranque automático:
sudo systemctl enable nginx
Parte B: Confirmar que responde por HTTP
Opción 1: con curl
curl -I http://127.0.0.1/Deberías ver un HTTP/1.1 200 OK (u otro código válido si tu página por defecto difiere). Para ver el HTML:
curl http://127.0.0.1/ | headOpción 2: con navegador
- Si estás en la misma máquina con entorno gráfico: abre
http://localhost. - Si es un servidor remoto: abre
http://IP_DEL_SERVIDORdesde tu equipo (asegúrate de que el firewall y la red lo permitan).
Parte C: Verificar puertos en escucha
sudo ss -lntp | grep ':80'Si no aparece nada, revisa systemctl status nginx y el error.log.
Parte D: Generar tráfico y observar access.log
Haz 3 peticiones para que queden registradas:
curl -s http://127.0.0.1/ > /dev/null
curl -s http://127.0.0.1/ > /dev/null
curl -s http://127.0.0.1/ > /dev/nullAhora observa el log de accesos en tiempo real:
sudo tail -f /var/log/nginx/access.logQué buscar en cada línea (interpretación práctica):
- IP cliente: en local suele ser
127.0.0.1. - Método y ruta: por ejemplo
GET /. - Código de estado:
200,404, etc. - User-Agent: verás
curlsi usaste curl, o el navegador si accediste desde uno.
Parte E: Provocar un error controlado y revisar error.log
Una forma simple de generar un evento visible es pedir un recurso inexistente (esto normalmente genera un 404 y puede o no aparecer en error.log según configuración, pero siempre quedará en access.log):
curl -I http://127.0.0.1/no-existeRevisa el acceso:
sudo tail -n 20 /var/log/nginx/access.logAhora revisa el log de errores:
sudo tail -n 50 /var/log/nginx/error.logSi quieres un error más “claro” a nivel de servicio, prueba a introducir un fallo de sintaxis en una configuración incluida (por ejemplo, en un archivo dentro de /etc/nginx/conf.d/ o en un sitio habilitado), y luego ejecuta:
sudo nginx -tObserva el mensaje de error (te dirá archivo y línea). Corrige el error y recarga:
sudo systemctl reload nginxParte F: Checklist de verificación
- Servicio activo:
systemctl status nginxmuestraactive (running). - Puerto 80 en escucha:
ss -lntpmuestra Nginx en:80. - Respuesta HTTP:
curl -Idevuelve un código coherente (idealmente 200). - Logs:
access.logregistra tus peticiones;error.logmuestra problemas cuando ocurren.