Instalación de Nginx y operación básica en Linux

Capítulo 2

Tiempo estimado de lectura: 6 minutos

+ Ejercicio

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 update

2) 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 nginx

3) Verificar versión instalada

nginx -v

Notas sobre repositorios y paquetes en Debian/Ubuntu

  • Repositorio por defecto: el paquete nginx proviene 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 nginx

Si tu sistema usa yum:

sudo yum install -y nginx

3) 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:

Continúa en nuestra aplicación.
  • Escuche el audio con la pantalla apagada.
  • Obtenga un certificado al finalizar.
  • ¡Más de 5000 cursos para que explores!
O continúa leyendo más abajo...
Download App

Descargar la aplicación

sudo dnf repolist

En 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 -v

Gestió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ónComandoUso típico
Iniciarsudo systemctl start nginxArrancar el servicio
Detenersudo systemctl stop nginxParar Nginx
Reiniciarsudo systemctl restart nginxAplicar cambios “a lo bruto”
Recargarsudo systemctl reload nginxAplicar cambios sin reinicio completo
Habilitar al arranquesudo systemctl enable nginxArrancar en boot
Deshabilitar al arranquesudo systemctl disable nginxNo arrancar en boot

Verificar estado y diagnósticos rápidos

Para ver si está activo y si hubo errores recientes:

sudo systemctl status nginx

Para ver logs del servicio vía journal (útil si Nginx no inicia):

sudo journalctl -u nginx --no-pager -n 100

Verificar 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.log y /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.log y /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 -t

Si el test es correcto, recarga:

sudo systemctl reload nginx

Laboratorio guiado: levantar Nginx, comprobar respuesta y leer logs

Parte A: Arrancar y habilitar el servicio

  1. Instala Nginx según tu distribución (APT o DNF/YUM).

  2. Inicia el servicio:

    sudo systemctl start nginx
  3. Comprueba el estado:

    sudo systemctl status nginx
  4. (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/ | head

Opció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_SERVIDOR desde 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/null

Ahora observa el log de accesos en tiempo real:

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

Qué 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 curl si 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-existe

Revisa el acceso:

sudo tail -n 20 /var/log/nginx/access.log

Ahora revisa el log de errores:

sudo tail -n 50 /var/log/nginx/error.log

Si 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 -t

Observa el mensaje de error (te dirá archivo y línea). Corrige el error y recarga:

sudo systemctl reload nginx

Parte F: Checklist de verificación

  • Servicio activo: systemctl status nginx muestra active (running).
  • Puerto 80 en escucha: ss -lntp muestra Nginx en :80.
  • Respuesta HTTP: curl -I devuelve un código coherente (idealmente 200).
  • Logs: access.log registra tus peticiones; error.log muestra problemas cuando ocurren.

Ahora responde el ejercicio sobre el contenido:

¿Qué acción es más adecuada para aplicar cambios de configuración en Nginx minimizando la interrupción de conexiones activas (cuando es posible)?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

La recarga (reload) aplica cambios de configuración sin reiniciar por completo el proceso y, cuando es posible, evita cortar conexiones activas. El reinicio (restart) puede interrumpirlas.

Siguiente capítulo

Estructura de configuración de Nginx y jerarquía de directivas

Arrow Right Icon
Portada de libro electrónico gratuitaNginx para Principiantes: Domina el Servidor Web Moderno desde Cero
20%

Nginx para Principiantes: Domina el Servidor Web Moderno desde Cero

Nuevo curso

10 páginas

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.