Etiquetas

NGNX (inicio)


Introducción a Nginx

Nginx (pronunciado "engine-x") es un servidor web de alto rendimiento, también utilizado como proxy inverso, balanceador de carga y caché HTTP. Fue creado por Igor Sysoev en 2004 y se ha convertido en una de las herramientas más populares para servir contenido web debido a su eficiencia, escalabilidad y bajo consumo de recursos.


¿Para qué sirve Nginx?

  1. Servidor web: Sirve páginas web estáticas y dinámicas.
  2. Proxy inverso: Distribuye solicitudes a otros servidores (como aplicaciones Node.js, Python, PHP, etc.).
  3. Balanceador de carga: Distribuye el tráfico entre varios servidores para mejorar el rendimiento y la disponibilidad.
  4. Caché HTTP: Almacena respuestas frecuentes para reducir la carga en los servidores backend.
  5. Terminación SSL/TLS: Maneja conexiones seguras (HTTPS) para las aplicaciones.

Características clave

  • Arquitectura asíncrona y basada en eventos: Permite manejar miles de conexiones simultáneas con bajo consumo de memoria.
  • Configuración flexible: Usa archivos de configuración simples y modulares.
  • Alto rendimiento: Ideal para sitios con mucho tráfico.
  • Soporte para protocolos modernos: HTTP/2, WebSocket, gRPC, entre otros.

Aquí te explico cómo instalar Nginx en Ubuntu (Linux) y en Windows, con los pasos detallados para cada sistema operativo:


1. Instalación en Ubuntu (Linux)

Requisitos previos

  • Un sistema Ubuntu actualizado (20.04 LTS, 22.04 LTS, etc.).
  • Acceso a terminal con permisos de administrador (sudo).

Pasos para instalar Nginx

  1. Actualizar los paquetes del sistema:

    sudo apt update && sudo apt upgrade -y
  2. Instalar Nginx:

    sudo apt install nginx -y
  3. Iniciar el servicio de Nginx:

    sudo systemctl start nginx
  4. Habilitar Nginx para que inicie automáticamente al arrancar el sistema:

    sudo systemctl enable nginx
  5. Verificar el estado del servicio:

    sudo systemctl status nginx

    (Deberías ver active (running)).

  6. Abrir el firewall para permitir tráfico HTTP/HTTPS:

    sudo ufw allow 'Nginx HTTP' # Puerto 80 sudo ufw allow 'Nginx HTTPS' # Puerto 443 (opcional) sudo ufw enable
  7. Verificar la instalación:

    • Abre un navegador y visita http://tu_ip_o_dominio.
    • Deberías ver la página de bienvenida de Nginx.

2. Instalación en Windows

Requisitos previos

  • Windows 10/11 o Windows Server.
  • Descargar Nginx para Windows desde el sitio oficial (versión estable : https://nginx.org/en/download.html).

Pasos para instalar Nginx

  1. Descargar Nginx:

    • Ve a nginx.org y descarga la versión para Windows (ej: nginx-1.25.3.zip).
  2. Extraer el archivo ZIP:

    • Extrae el contenido del archivo ZIP a una carpeta, por ejemplo: C:\nginx.
  3. Iniciar Nginx:

    • Abre una terminal como administrador.
    • Navega a la carpeta donde extrajiste Nginx:
      cd C:\nginx
    • Ejecuta Nginx:
      start nginx
  4. Verificar la instalación:

    • Abre un navegador y visita http://localhost.
    • Deberías ver la página de bienvenida de Nginx.
  5. Detener o reiniciar Nginx:

    • Para detener Nginx:
      nginx -s stop
    • Para reiniciar Nginx:
      nginx -s reload
  6. Configurar Nginx como servicio (opcional):

    • Puedes usar herramientas como WinSW para convertir Nginx en un servicio de Windows y que inicie automáticamente.

3. Notas importantes

Ubuntu:

  • Los archivos de configuración se encuentran en /etc/nginx/.
  • Para aplicar cambios en la configuración, usa:
    sudo systemctl restart nginx

Windows:

  • No hay un instalador oficial, solo el archivo ZIP.
  • Los archivos de configuración están en la carpeta donde extrajiste Nginx (ej: C:\nginx\conf\nginx.conf).
  • Para aplicar cambios, reinicia Nginx con nginx -s reload.

4. Solución de problemas comunes

  • Puerto 80 ocupado (Ubuntu/Windows):

    • Verifica qué servicio está usando el puerto 80:
      sudo netstat -tulnp | grep 80 # Ubuntu
      o
      netstat -ano | findstr 80 # Windows
    • Detén el servicio que lo está usando o cambia el puerto en la configuración de Nginx.
  • Error al iniciar Nginx:

    • Revisa los logs en:
      • Ubuntu: /var/log/nginx/error.log
      • Windows: C:\nginx\logs\error.log

1. Arquitectura General

Nginx sigue un modelo asíncrono y basado en eventos, lo que le permite manejar miles de conexiones simultáneas con bajo consumo de recursos. Su estructura se divide en:

  • Proceso maestro (Master Process): Gestiona los procesos trabajadores y lee la configuración.
  • Procesos trabajadores (Worker Processes): Manejan las solicitudes de los clientes (HTTP, proxy, etc.).

2. Estructura de Directorios

Al instalar Nginx, los archivos clave se organizan en directorios estándar (pueden variar según el sistema operativo):

Directorio Descripción
/etc/nginx/ Contiene los archivos de configuración principales (nginx.conf).
/etc/nginx/conf.d/ Archivos de configuración adicionales (incluidos por nginx.conf).
/var/www/html/ Directorio por defecto para servir archivos estáticos (HTML, CSS, JS).
/var/log/nginx/ Logs de acceso (access.log) y errores (error.log).
/usr/sbin/nginx Ejecutable principal de Nginx.

3. Archivos de Configuración

El corazón de Nginx es su archivo de configuración (nginx.conf), que suele incluir:

  • Directivas globales: Configuraciones generales (ej: número de procesos trabajadores).
  • Bloques http: Define cómo manejar el tráfico HTTP.
  • Bloques server: Configura dominios o sitios web (similar a "virtual hosts" en Apache).
  • Bloques location: Especifica reglas para rutas específicas (ej: /images/).

En Nginx, los archivos y directorios de configuración tienen propósitos específicos y siguen una jerarquía de prioridad al cargarse. Aquí te explico cada uno, su ubicación típica (en sistemas basados en Linux/Unix), su función y cómo interactúan entre sí:


1. Archivos y Directorios Principales

nginx.conf

  • Ubicación: /etc/nginx/nginx.conf
  • Propósito: Archivo de configuración principal. Define la configuración global de Nginx, como:
    • Número de procesos trabajadores (worker_processes).
    • Bloques events (configuración de conexiones).
    • Bloque http (donde se incluyen otros archivos de configuración).
  • Prioridad: Es el primer archivo que se carga. Los demás se incluyen desde aquí.
  • Ejemplo de inclusión:
    http { include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }

conf.d/

  • Ubicación: /etc/nginx/conf.d/
  • Propósito: Directorio para archivos de configuración adicionales (generalmente con extensión .conf). Estos archivos se incluyen automáticamente en el bloque http de nginx.conf.
  • Prioridad: Se cargan en orden alfabético después de nginx.conf.
  • Uso típico: Configuraciones de servidores virtuales simples o módulos específicos.

sites-available/ y sites-enabled/

  • Ubicación:
    • /etc/nginx/sites-available/ (archivos de configuración de sitios).
    • /etc/nginx/sites-enabled/ (enlaces simbólicos a los archivos en sites-available).
  • Propósito:
    • sites-available: Almacena configuraciones de sitios web (ej: misitio.conf).
    • sites-enabled: Contiene enlaces simbólicos a los archivos en sites-available que están activos.
  • Prioridad: Se cargan después de conf.d/. Permite activar/desactivar sitios sin borrar configuraciones.
  • Ejemplo:
    ln -s /etc/nginx/sites-available/misitio.conf /etc/nginx/sites-enabled/

snippets/

  • Ubicación: /etc/nginx/snippets/
  • Propósito: Almacena fragmentos de configuración reutilizables (ej: configuraciones de SSL, headers, reglas de caché).
  • Prioridad: Se incluyen manualmente en otros archivos de configuración.
  • Ejemplo: Un archivo ssl.conf con configuraciones de SSL/TLS.

mime.types

  • Ubicación: /etc/nginx/mime.types
  • Propósito: Define los tipos MIME (ej: text/html, image/jpeg) para que Nginx sepa cómo servir diferentes tipos de archivos.
  • Prioridad: Se incluye en nginx.conf o en el bloque http.
  • Ejemplo:
    types { text/html html; image/jpeg jpg jpeg; }

fastcgi_params y fastcgi.conf

  • Ubicación: /etc/nginx/fastcgi_params y /etc/nginx/fastcgi.conf
  • Propósito: Configuran variables y parámetros para la comunicación con servidores FastCGI (ej: PHP-FPM).
  • Diferencia:
    • fastcgi_params: Variables básicas.
    • fastcgi.conf: Incluye fastcgi_params y añade SCRIPT_FILENAME y fastcgi_pass.
  • Prioridad: Se incluyen en la configuración de un location para PHP.

proxy_params

  • Ubicación: /etc/nginx/proxy_params
  • Propósito: Define parámetros comunes para proxy inverso (ej: headers como Host, X-Real-IP).
  • Prioridad: Se incluye en bloques location que usan proxy_pass.

scgi_params y uwsgi_params

  • Ubicación: /etc/nginx/scgi_params y /etc/nginx/uwsgi_params
  • Propósito: Similar a fastcgi_params, pero para protocolos SCGI y uWSGI (usados con Python, Ruby, etc.).

koi_utf, koi_win, win-utf

  • Ubicación: /etc/nginx/koi_utf, /etc/nginx/koi_win, /etc/nginx/win-utf
  • Propósito: Archivos de mapeo de codificación para convertir entre diferentes juegos de caracteres (ej: KOI8-R a UTF-8). Poco usados en configuraciones modernas.

modules-available/ y modules-enabled/

  • Ubicación:
    • /etc/nginx/modules-available/ (módulos disponibles).
    • /etc/nginx/modules-enabled/ (enlaces simbólicos a módulos activos).
  • Propósito: Permite cargar módulos dinámicos (ej: módulos de terceros).
  • Prioridad: Se cargan al iniciar Nginx, según lo definido en nginx.conf.

2. Jerarquía de Carga y Prioridad

  1. nginx.conf: Se carga primero. Define la configuración global e incluye otros archivos.
  2. conf.d/*.conf: Se cargan en orden alfabético.
  3. sites-enabled/*: Se cargan después de conf.d/.
  4. Archivos incluidos manualmente (ej: snippets/, fastcgi.conf): Se cargan donde se referencian.

3. Ejemplo de Estructura Completa

/etc/nginx/ ├── nginx.conf # Configuración principal ├── conf.d/ # Configuraciones adicionales │ └── ejemplo.conf ├── sites-available/ # Configuraciones de sitios │ └── misitio.conf ├── sites-enabled/ # Enlaces a sitios activos │ └── misitio.conf -> ../sites-available/misitio.conf ├── snippets/ # Fragmentos reutilizables │ └── ssl.conf ├── mime.types # Tipos MIME ├── fastcgi_params # Parámetros FastCGI ├── proxy_params # Parámetros proxy └── modules-enabled/ # Módulos activos

la configuración básica del archivo nginx.conf, que es el archivo principal de configuración de Nginx. Este archivo define el comportamiento global del servidor y cómo se cargan las configuraciones adicionales.


1. Ubicación del Archivo

  • Ubuntu/Linux: /etc/nginx/nginx.conf
  • Windows: C:\nginx\conf\nginx.conf

2. Estructura Básica de nginx.conf

El archivo nginx.conf está dividido en bloques que definen la configuración global, eventos, HTTP, y la inclusión de otros archivos de configuración. Aquí tienes un ejemplo comentado de una configuración básica:

# Bloque principal: Configuración global de Nginx user www-data; # Usuario con el que se ejecutan los procesos trabajadores (Ubuntu) worker_processes auto; # Número de procesos trabajadores (auto: igual al número de núcleos del CPU) # Bloque de eventos: Configuración de conexiones events { worker_connections 1024; # Número máximo de conexiones por proceso multi_accept on; # Permite aceptar múltiples conexiones a la vez } # Bloque HTTP: Configuración del servidor web http { # Incluir tipos MIME para servir archivos correctamente include /etc/nginx/mime.types; # Ubuntu # include mime.types; # Windows (si el archivo está en la misma carpeta) # Configuración de logs access_log /var/log/nginx/access.log; # Ubuntu error_log /var/log/nginx/error.log; # Ubuntu # access_log logs/access.log; # Windows # error_log logs/error.log; # Windows # Configuración de caché y rendimiento sendfile on; # Permite enviar archivos de manera eficiente tcp_nopush on; # Optimiza el envío de paquetes TCP tcp_nodelay on; # Desactiva el algoritmo de Nagle para mejorar el rendimiento keepalive_timeout 65; # Tiempo de espera para conexiones keep-alive # Configuración de compresión Gzip gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # Incluir configuraciones adicionales include /etc/nginx/conf.d/*.conf; # Ubuntu: Archivos en conf.d/ include /etc/nginx/sites-enabled/*; # Ubuntu: Sitios activos en sites-enabled/ # Bloque del servidor por defecto (opcional) server { listen 80 default_server; server_name _; return 404; # Respuesta para solicitudes sin configuración específica } }

3. Explicación de los Bloques

Bloque Principal

  • user www-data;: Define el usuario con el que se ejecutan los procesos trabajadores. En Ubuntu, suele ser www-data.
  • worker_processes auto;: Define el número de procesos trabajadores. auto ajusta automáticamente este valor al número de núcleos del CPU.

Bloque events

  • worker_connections 1024;: Número máximo de conexiones que cada proceso trabajador puede manejar.
  • multi_accept on;: Permite a los procesos aceptar múltiples conexiones nuevas a la vez.

Bloque http

  • include /etc/nginx/mime.types;: Incluye el archivo que define los tipos MIME para servir archivos correctamente.
  • access_log y error_log: Definen la ubicación de los logs de acceso y errores.
  • sendfile on;: Permite enviar archivos directamente desde el disco, mejorando el rendimiento.
  • gzip on;: Habilita la compresión Gzip para reducir el tamaño de las respuestas.
  • include /etc/nginx/conf.d/*.conf;: Incluye todos los archivos de configuración en el directorio conf.d/.
  • include /etc/nginx/sites-enabled/*;: Incluye todos los sitios activos enlazados en sites-enabled/.

4. Configuración Adicional Recomendada

Habilitar HTTPS (SSL/TLS)

Si quieres usar HTTPS, añade esta configuración dentro del bloque http:

ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';

Optimización de Rendimiento

Añade estas directivas para mejorar el rendimiento:

client_max_body_size 100M; # Tamaño máximo de carga de archivos client_body_timeout 12; # Tiempo máximo para recibir el cuerpo de la solicitud client_header_timeout 12; # Tiempo máximo para recibir los headers de la solicitud

5. Verificar y Aplicar la Configuración

  1. Verifica la sintaxis del archivo de configuración:

    sudo nginx -t

    Si todo está correcto, verás:

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
  2. Reinicia Nginx para aplicar los cambios:

    sudo systemctl restart nginx # Ubuntu

    En Windows, reinicia Nginx desde la terminal:

    cd C:\nginx nginx -s reload

6. ¿Qué Sigue?

  • Configurar sitios web: Crea archivos de configuración en sites-available/ y actívalos en sites-enabled/ (Ubuntu).
  • Configurar proxy inverso: Si tienes una aplicación dinámica (Node.js, Python, etc.), configura Nginx como proxy inverso.
  • Habilitar HTTPS: Usa Certbot para obtener certificados SSL gratuitos de Let's Encrypt.

Aquí tienes una configuración básica de Nginx para servir un sitio web estático o actuar como proxy inverso. Esta configuración es válida tanto para Ubuntu como para Windows (solo cambia la ruta de los archivos).


1. Estructura de Archivos

  • Ubuntu: /etc/nginx/
  • Windows: C:\nginx\conf\

Los archivos clave son:

  • nginx.conf: Configuración principal.
  • sites-available/tusitio.conf: Configuración del sitio web (en Ubuntu).
  • conf.d/tusitio.conf: Alternativa para configuraciones adicionales.

2. Configuración Básica para un Sitio Web Estático

Archivo: /etc/nginx/sites-available/tusitio.conf (Ubuntu) o C:\nginx\conf\conf.d\tusitio.conf (Windows)

server { # Escucha en el puerto 80 (HTTP) listen 80; # Nombre del dominio o IP del servidor server_name tusitio.com www.tusitio.com; # Ruta donde están los archivos estáticos (HTML, CSS, JS, imágenes) root /var/www/tusitio; index index.html index.htm; # Configuración para archivos estáticos location / { try_files $uri $uri/ =404; } # Cachear imágenes, CSS y JS para mejorar el rendimiento location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; } # Redirigir HTTP a HTTPS (opcional, si tienes SSL) # listen 443 ssl; # ssl_certificate /ruta/a/tu/certificado.pem; # ssl_certificate_key /ruta/a/tu/llave-privada.key; }

3. Configuración como Proxy Inverso (para Node.js, Python, PHP, etc.)

Si tu aplicación corre en otro puerto (ej: Node.js en el 3000), usa esta configuración para redirigir el tráfico:

server { listen 80; server_name tusitio.com; location / { # Redirige las solicitudes a tu aplicación (ej: Node.js en el puerto 3000) proxy_pass http://localhost:3000; # Configuración de headers para proxy inverso proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

4. Configuración para PHP con FastCGI (ej: PHP-FPM)

Si usas PHP, necesitas configurar Nginx para que procese los archivos .php con FastCGI:

server { listen 80; server_name tusitio.com; root /var/www/tusitio; index index.php index.html; location / { try_files $uri $uri/ =404; } # Configuración para archivos PHP location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Ubuntu (ajusta la versión de PHP) # fastcgi_pass 127.0.0.1:9000; # Windows (si usas TCP/IP) fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

5. Habilitar la Configuración (Solo Ubuntu)

  1. Crea un enlace simbólico para activar el sitio:

    sudo ln -s /etc/nginx/sites-available/tusitio.conf /etc/nginx/sites-enabled/
  2. Verifica la sintaxis de la configuración:

    sudo nginx -t
  3. Reinicia Nginx para aplicar los cambios:

    sudo systemctl restart nginx

6. Configuración en Windows

  • Edita el archivo C:\nginx\conf\nginx.conf y añade tu configuración dentro del bloque http.
  • Reinicia Nginx desde la terminal:
    cd C:\nginx nginx -s reload

7. Verificar que Todo Funciona

  • Abre un navegador y visita http://tusitio.com o http://localhost.
  • Si usas proxy inverso, asegúrate de que tu aplicación (Node.js, PHP, etc.) esté corriendo en el puerto configurado.

8. Comandos Útiles

Comando (Ubuntu) Comando (Windows) Descripción
sudo systemctl start nginx start nginx Iniciar Nginx
sudo systemctl stop nginx nginx -s stop Detener Nginx
sudo systemctl restart nginx nginx -s reload Reiniciar Nginx
sudo nginx -t nginx -t Verificar sintaxis de la configuración



Nginx para un sitio web dinámico, como una aplicación en Node.js, Python (Django/Flask), PHP (con PHP-FPM), o cualquier backend que escuche en un puerto local. Aquí te explico cómo hacerlo paso a paso, con ejemplos prácticos y ajustes para Ubuntu (Linux) y Windows.


1. Escenario Común

Supongamos que tienes una aplicación dinámica (ej: Node.js) corriendo en el puerto 3000 de tu servidor. Nginx actuará como proxy inverso, redirigiendo las solicitudes HTTP al puerto de tu aplicación.


2. Configuración Básica para un Sitio Dinámico

Ubicación del archivo:

  • Ubuntu: /etc/nginx/sites-available/tusitio_dinamico.conf
  • Windows: C:\nginx\conf\conf.d\tusitio_dinamico.conf

Ejemplo de configuración para Node.js (o cualquier backend):

server { # Escucha en el puerto 80 (HTTP) listen 80; # Nombre del dominio o IP del servidor server_name tusitio.com www.tusitio.com; # Ruta para archivos estáticos (opcional, si tu app también sirve archivos estáticos) location /static/ { root /var/www/tusitio; expires 30d; } # Proxy inverso para la aplicación dinámica location / { # Redirige las solicitudes a tu aplicación (ej: Node.js en el puerto 3000) proxy_pass http://localhost:3000; # Configuración de headers para proxy inverso proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Configuración para WebSockets (si tu app los usa) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # Manejo de errores (opcional) error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/tusitio; } }

3. Configuración para PHP con PHP-FPM

Si tu sitio dinámico usa PHP (ej: WordPress, Laravel), necesitas configurar Nginx para que procese los archivos .php con PHP-FPM:

Ejemplo de configuración para PHP:

server { listen 80; server_name tusitio.com; root /var/www/tusitio; index index.php index.html; location / { try_files $uri $uri/ =404; } # Configuración para archivos PHP location ~ \.php$ { include fastcgi_params; # Ubuntu: Usa socket de PHP-FPM fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Ajusta la versión de PHP # Windows: Usa TCP/IP (si PHP-FPM está configurado para escuchar en 127.0.0.1:9000) # fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

4. Configuración para Python (Django/Flask con Gunicorn o uWSGI)

Si tu aplicación está en Python (ej: Django o Flask) y usas Gunicorn o uWSGI, la configuración es similar a la de Node.js, pero apuntando al puerto donde corre tu aplicación Python.

Ejemplo para Django con Gunicorn (puerto 8000):

server { listen 80; server_name tusitio.com; location /static/ { alias /var/www/tusitio/static/; expires 30d; } location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

5. Habilitar la Configuración (Ubuntu)

  1. Crea un enlace simbólico para activar el sitio:

    sudo ln -s /etc/nginx/sites-available/tusitio_dinamico.conf /etc/nginx/sites-enabled/
  2. Verifica la sintaxis de la configuración:

    sudo nginx -t
  3. Reinicia Nginx para aplicar los cambios:

    sudo systemctl restart nginx

6. Aplicar la Configuración (Windows)

  1. Edita el archivo C:\nginx\conf\nginx.conf y añade tu configuración dentro del bloque http.
  2. Reinicia Nginx desde la terminal:
    cd C:\nginx nginx -s reload

7. Verificar que Todo Funciona

  • Abre un navegador y visita http://tusitio.com o http://localhost.
  • Si usas proxy inverso, asegúrate de que tu aplicación (Node.js, PHP-FPM, Gunicorn, etc.) esté corriendo en el puerto configurado.
  • Revisa los logs de Nginx si hay errores:
    • Ubuntu: /var/log/nginx/error.log
    • Windows: C:\nginx\logs\error.log

8. Configuración Adicional Recomendada

Habilitar HTTPS con Let's Encrypt (Ubuntu)

Si quieres usar HTTPS, instala Certbot y configura SSL:

sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d tusitio.com -d www.tusitio.com

Certbot actualizará automáticamente tu configuración de Nginx para usar HTTPS.

Optimización de Rendimiento

Añade estas directivas dentro del bloque server para mejorar el rendimiento:

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

9. Comandos Útiles

Comando (Ubuntu) Comando (Windows) Descripción
sudo systemctl start nginx start nginx Iniciar Nginx
sudo systemctl stop nginx nginx -s stop Detener Nginx
sudo systemctl restart nginx nginx -s reload Reiniciar Nginx
sudo nginx -t nginx -t Verificar sintaxis de la configuración