Cuando se trata de escalar y optimizar aplicaciones Node.js, NGINX desempeña un papel vital en el manejo de un alto tráfico, entregando archivos estáticos de manera eficiente y actuando como un equilibrador de carga. NGINX, un servidor web de alto rendimiento, también puede funcionar como un proxy inverso, lo que le permite distribuir solicitudes entre múltiples servidores. En este artículo, cubriremos qué es NGINX, por qué debería usarlo con Node.js y cómo configurar NGINX para diversas tareas, incluido el proxy inverso, el equilibrio de carga y la distribución de contenido estático.
NGINX (pronunciado "Engine X") es un potente servidor web y proxy inverso diseñado para manejar una gran cantidad de conexiones simultáneas con alto rendimiento. Creado inicialmente como un servidor web, la versatilidad de NGINX lo ha extendido al equilibrio de carga, el proxy inverso y el servicio de archivos estáticos.
¿Por qué usar NGINX con Node.js?
Para configurar NGINX para Node.js, sigue estos pasos:
Primero, necesitas instalar NGINX en tu servidor. Utilice los siguientes comandos según su sistema operativo:
Para Ubuntu/Debian:
sudo apt update sudo apt install nginx
Para CentOS/RHEL:
sudo yum install nginx
Después de la instalación, puede iniciar NGINX con el siguiente comando:
sudo systemctl start nginx
Puedes verificar que NGINX se esté ejecutando visitando la dirección IP de tu servidor en un navegador. Si NGINX está funcionando, verá una página de bienvenida predeterminada de NGINX.
Para habilitar NGINX como proxy inverso, permitiéndole reenviar solicitudes de clientes a una aplicación Node.js, debemos configurar NGINX en consecuencia.
Aquí hay un ejemplo de una configuración NGINX para una aplicación Node.js que se ejecuta en localhost:3000.
cd /etc/nginx/sites-available/
sudo nano nodeapp.conf
server { listen 80; server_name your_domain_or_IP; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Esta configuración enrutará todo el tráfico entrante en el puerto 80 a su aplicación Node.js que se ejecuta en el puerto 3000.
Cuando su aplicación Node.js crezca, es posible que una sola instancia no sea suficiente para manejar el tráfico. NGINX se puede configurar como un equilibrador de carga, distribuyendo el tráfico entre múltiples instancias de Node.js.
Así es como puedes configurar NGINX para el equilibrio de carga:
sudo nano /etc/nginx/sites-available/nodeapp.conf
upstream node_backend { server localhost:3000; server localhost:3001; server localhost:3002; } server { listen 80; server_name your_domain_or_IP; location / { proxy_pass http://node_backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
sudo nginx -t sudo systemctl restart nginx
Explicación:
Esta configuración distribuye la carga de manera uniforme entre múltiples instancias de Node.js, mejorando la escalabilidad y la tolerancia a fallas.
Servir archivos estáticos como imágenes, CSS y JavaScript puede sobrecargar su aplicación Node.js. NGINX puede descargar esta responsabilidad, mejorando el rendimiento al servir directamente a los activos estáticos.
sudo mkdir -p /var/www/html/static
Mueva sus archivos estáticos (CSS, imágenes, JS) a este directorio.
Actualice su configuración de NGINX (nodeapp.conf) para servir archivos estáticos:
server { listen 80; server_name your_domain_or_IP; location /static/ { root /var/www/html; } location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
sudo nginx -t sudo systemctl restart nginx
Explicación:
La comunicación segura entre clientes y servidores es crucial, y SSL (Secure Sockets Layer) proporciona ese cifrado. NGINX puede manejar la terminación SSL, lo que significa que maneja el cifrado y descifrado de solicitudes HTTPS antes de pasarlas a la aplicación Node.js.
Así es como puedes configurar SSL con NGINX:
Obtener un certificado SSL. Puede obtener un certificado SSL gratuito de Let’s Encrypt o utilizar cualquier otra autoridad certificadora.
Modifica tu configuración de NGINX para habilitar SSL:
server { listen 443 ssl; server_name your_domain_or_IP; ssl_certificate /etc/ssl/certs/your_domain.crt; ssl_certificate_key /etc/ssl/private/your_domain.key; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } server { listen 80; server_name your_domain_or_IP; # Redirect all HTTP requests to HTTPS return 301 https://$host$request_uri; }
sudo nginx -t sudo systemctl restart nginx
Explicación:
NGINX es una herramienta poderosa para mejorar el rendimiento, la escalabilidad y la seguridad de sus aplicaciones Node.js. Desde el equilibrio de carga hasta el servicio de archivos estáticos y el manejo de la terminación SSL, NGINX descarga muchas tareas de Node.js, lo que permite que su aplicación se centre en lo que mejor sabe hacer: manejar la lógica empresarial. Con las configuraciones proporcionadas en este artículo, puede configurar NGINX para mejorar la eficiencia y confiabilidad de su aplicación Node.js.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3