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?
- Servidor web: Sirve páginas web estáticas y dinámicas.
- Proxy inverso: Distribuye solicitudes a otros servidores (como aplicaciones Node.js, Python, PHP, etc.).
- Balanceador de carga: Distribuye el tráfico entre varios servidores para mejorar el rendimiento y la disponibilidad.
- Caché HTTP: Almacena respuestas frecuentes para reducir la carga en los servidores backend.
- 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
Actualizar los paquetes del sistema:
sudo apt update && sudo apt upgrade -yInstalar Nginx:
sudo apt install nginx -yIniciar el servicio de Nginx:
sudo systemctl start nginxHabilitar Nginx para que inicie automáticamente al arrancar el sistema:
sudo systemctl enable nginxVerificar el estado del servicio:
sudo systemctl status nginx(Deberías ver
active (running)).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 enableVerificar la instalación:
- Abre un navegador y visita
http://tu_ip_o_dominio. - Deberías ver la página de bienvenida de Nginx.
- Abre un navegador y visita
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
Descargar Nginx:
- Ve a nginx.org y descarga la versión para Windows (ej:
nginx-1.25.3.zip).
- Ve a nginx.org y descarga la versión para Windows (ej:
Extraer el archivo ZIP:
- Extrae el contenido del archivo ZIP a una carpeta, por ejemplo:
C:\nginx.
- Extrae el contenido del archivo ZIP a una carpeta, por ejemplo:
Iniciar Nginx:
- Abre una terminal como administrador.
- Navega a la carpeta donde extrajiste Nginx:
cd C:\nginx - Ejecuta Nginx:
start nginx
Verificar la instalación:
- Abre un navegador y visita
http://localhost. - Deberías ver la página de bienvenida de Nginx.
- Abre un navegador y visita
Detener o reiniciar Nginx:
- Para detener Nginx:
nginx -s stop - Para reiniciar Nginx:
nginx -s reload
- Para detener Nginx:
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:
osudo netstat -tulnp | grep 80 # Ubuntunetstat -ano | findstr 80 # Windows - Detén el servicio que lo está usando o cambia el puerto en la configuración de Nginx.
- Verifica qué servicio está usando el puerto 80:
Error al iniciar Nginx:
- Revisa los logs en:
- Ubuntu:
/var/log/nginx/error.log - Windows:
C:\nginx\logs\error.log
- Ubuntu:
- Revisa los logs en:
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).
- Número de procesos trabajadores (
- 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 bloquehttpdenginx.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 ensites-available).
- Propósito:
sites-available: Almacena configuraciones de sitios web (ej:misitio.conf).sites-enabled: Contiene enlaces simbólicos a los archivos ensites-availableque 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.confcon 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.confo en el bloquehttp. - Ejemplo:
types { text/html html; image/jpeg jpg jpeg; }
fastcgi_params y fastcgi.conf
- Ubicación:
/etc/nginx/fastcgi_paramsy/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: Incluyefastcgi_paramsy añadeSCRIPT_FILENAMEyfastcgi_pass.
- Prioridad: Se incluyen en la configuración de un
locationpara 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
locationque usanproxy_pass.
scgi_params y uwsgi_params
- Ubicación:
/etc/nginx/scgi_paramsy/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
nginx.conf: Se carga primero. Define la configuración global e incluye otros archivos.conf.d/*.conf: Se cargan en orden alfabético.sites-enabled/*: Se cargan después deconf.d/.- 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 serwww-data.worker_processes auto;: Define el número de procesos trabajadores.autoajusta 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_logyerror_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 directorioconf.d/.include /etc/nginx/sites-enabled/*;: Incluye todos los sitios activos enlazados ensites-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
-
Verifica la sintaxis del archivo de configuración:
sudo nginx -tSi 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 -
Reinicia Nginx para aplicar los cambios:
sudo systemctl restart nginx # UbuntuEn 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 ensites-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)
-
Crea un enlace simbólico para activar el sitio:
sudo ln -s /etc/nginx/sites-available/tusitio.conf /etc/nginx/sites-enabled/ -
Verifica la sintaxis de la configuración:
sudo nginx -t -
Reinicia Nginx para aplicar los cambios:
sudo systemctl restart nginx
6. Configuración en Windows
- Edita el archivo
C:\nginx\conf\nginx.confy añade tu configuración dentro del bloquehttp. - Reinicia Nginx desde la terminal:
cd C:\nginx nginx -s reload
7. Verificar que Todo Funciona
- Abre un navegador y visita
http://tusitio.comohttp://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)
-
Crea un enlace simbólico para activar el sitio:
sudo ln -s /etc/nginx/sites-available/tusitio_dinamico.conf /etc/nginx/sites-enabled/ -
Verifica la sintaxis de la configuración:
sudo nginx -t -
Reinicia Nginx para aplicar los cambios:
sudo systemctl restart nginx
6. Aplicar la Configuración (Windows)
- Edita el archivo
C:\nginx\conf\nginx.confy añade tu configuración dentro del bloquehttp. - Reinicia Nginx desde la terminal:
cd C:\nginx nginx -s reload
7. Verificar que Todo Funciona
- Abre un navegador y visita
http://tusitio.comohttp://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
- Ubuntu:
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 |
