Instalación y Configuración de Nginx

Nginx es un servidor web y proxy inverso conocido por su alto rendimiento, estabilidad y bajo uso de recursos. Es utilizado por muchas de las mayores empresas de tecnología para servir contenido web a gran escala. Este artículo te guiará a través de los pasos necesarios para instalar y configurar Nginx en un servidor Linux.

Compartir en Linkedin Compartir en WhatsApp

Tiempo estimado de lectura: 4 minutos

Imagen del artículo Instalación y Configuración de Nginx

Nginx es un servidor web y proxy inverso conocido por su alto rendimiento, estabilidad y bajo uso de recursos. Es utilizado por muchas de las mayores empresas de tecnología para servir contenido web a gran escala. Este artículo te guiará a través de los pasos necesarios para instalar y configurar Nginx en un servidor Linux.

Paso 1: Instalación de Nginx

Para Distribuciones Basadas en Debian (Ubuntu, Debian):

  1. Actualizar el Sistema:
sudo apt update
sudo apt upgrade

2. Instalar Nginx:

sudo apt install nginx

3. Iniciar y Habilitar Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Para Distribuciones Basadas en Red Hat (CentOS, Fedora):

  1. Actualizar el Sistema:
sudo yum update

2. Instalar Nginx:

sudo yum install epel-release
sudo yum install nginx

3. Iniciar y Habilitar Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Paso 2: Configuración Básica de Nginx

Estructura de Directorios de Nginx:

  • /etc/nginx/: Directorio de configuración principal.
  • /etc/nginx/nginx.conf: Archivo de configuración principal de Nginx.
  • /etc/nginx/conf.d/: Directorio para archivos de configuración adicional.
  • /etc/nginx/sites-available/: Directorio para archivos de configuración de sitios (no siempre presente por defecto).
  • /etc/nginx/sites-enabled/: Directorio para enlaces simbólicos a sitios habilitados (no siempre presente por defecto).
  • /var/www/: Directorio raíz para los archivos web.

Configuración de un Bloque de Servidor (Servidor Virtual):

  1. Crear un Archivo de Configuración de Sitio:
sudo nano /etc/nginx/sites-available/mi_sitio

2. Añadir la Configuración del Sitio:

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

    root /var/www/mi_sitio;
    index index.html index.htm;

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

    error_page 404 /404.html;
    location = /404.html {
        internal;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        internal;
    }
}

3. Crear el Directorio Raíz y un Archivo de Índice:

sudo mkdir -p /var/www/mi_sitio
sudo nano /var/www/mi_sitio/index.html

4. Añadir Contenido al Archivo de Índice:

<!DOCTYPE html>
<html>
<head>
    <title>Bienvenido a mi_sitio</title>
</head>
<body>
    <h1>¡Funciona!</h1>
</body>
</html>

5. Habilitar el Sitio Creando un Enlace Simbólico:

sudo ln -s /etc/nginx/sites-available/mi_sitio /etc/nginx/sites-enabled/

6. Probar la Configuración y Recargar Nginx:

sudo nginx -t
sudo systemctl reload nginx

Paso 3: Configuración Adicional

Configurar HTTPS con Let’s Encrypt:

  1. Instalar Certbot: Para distribuciones basadas en Debian:
sudo apt install certbot python3-certbot-nginx

Para distribuciones basadas en Red Hat:

sudo yum install certbot python3-certbot-nginx

2. Obtener un Certificado SSL:

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

3. Renovar Certificados Automáticamente:

Certbot instala automáticamente un cron job para renovar los certificados. Puedes verificarlo con:

sudo systemctl status certbot.timer

Paso 4: Monitorización y Mantenimiento

Monitorizar el Rendimiento de Nginx:

  • Acceder a los Logs:
    • Acceso: /var/log/nginx/access.log
    • Errores: /var/log/nginx/error.log
  • Herramientas de Monitorización:
    • Munin: Monitorea el rendimiento del servidor.
    • Grafana: Visualiza métricas de rendimiento.

Actualizar Nginx:

Mantén Nginx actualizado para aprovechar las últimas características y correcciones de seguridad:

sudo apt update && sudo apt upgrade nginx  # Para Debian/Ubuntu
sudo yum update nginx  # Para CentOS/Fedora

Conclusión

Nginx es una herramienta poderosa y flexible para servir contenido web. Su configuración inicial es sencilla y ofrece un rendimiento excelente incluso bajo alta carga. Al seguir estos pasos, puedes instalar y configurar Nginx para servir tus sitios web de manera segura y eficiente. Asegúrate de mantener tu servidor actualizado y monitorizado para garantizar un funcionamiento continuo y seguro.

Qué Es un Motor de Videojuegos y Cómo Funciona el Bucle de Juego

Descubre qué hace un motor de videojuegos, cómo funciona el bucle de juego y qué papel cumplen el renderizado, la física y el delta time.

Claves Primarias y Foráneas: Cómo se Relacionan las Tablas en una Base de Datos

Aprende qué son las claves primarias y foráneas, cómo conectan tablas, qué tipos de relaciones existen y por qué protegen la integridad de tus datos.

Qué Es el DNS: Cómo tu Navegador Encuentra un Sitio Web en Milisegundos

Entiende cómo funciona el sistema de nombres de dominio, qué son los registros A, CNAME y MX, y por qué a veces los cambios tardan.

Cifrado de Extremo a Extremo: Cómo Funciona y Qué Protege Realmente

Explicación sencilla del cifrado de extremo a extremo: claves pública y privada, qué protege, qué no protege y por qué importa.

Memoria RAM y almacenamiento: por qué no son lo mismo

Diferencias entre RAM y disco, qué hace cada uno, qué pasa cuando falta memoria y cuál conviene ampliar primero.

Qué es el DOM y Cómo lo Usa JavaScript para Cambiar una Página Web

Descubre qué es el DOM, cómo el navegador convierte el HTML en un árbol de nodos y cómo JavaScript lo modifica en tiempo real.

La Regla 3-2-1 de las Copias de Seguridad: Cómo Proteger tus Archivos de Verdad

Descubre en qué consiste la regla 3-2-1 de respaldo, los tipos de copia que existen y los errores más comunes al proteger la información.

Diagramas de flujo y pseudocódigo: cómo planificar un programa antes de escribirlo

Aprende a usar diagramas de flujo y pseudocódigo para diseñar algoritmos claros antes de escribir una sola línea de código.