"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > NGINX para aplicaciones Node.js: qué, por qué y cómo usarlo

NGINX para aplicaciones Node.js: qué, por qué y cómo usarlo

Publicado el 2024-11-04
Navegar:117

NGINX for Node.js Applications: What, Why, and How to Use It

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.

¿Qué es NGINX?

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?

  • Equilibrio de carga eficiente: NGINX puede distribuir el tráfico entre múltiples instancias de Node.js, mejorando la escalabilidad.
  • Proxy inverso: actúa como un servidor intermediario entre los clientes y los servidores backend Node.js, lo que ayuda a ocultar la arquitectura de la aplicación y equilibrar las solicitudes.
  • Manejo de contenido estático: NGINX puede servir archivos estáticos como imágenes, CSS y JavaScript, liberando a Node.js de esta tarea y mejorando el rendimiento.
  • Terminación SSL: NGINX puede manejar el cifrado SSL (TLS), aliviando la carga de Node.js y mejorando la seguridad.

Configurando NGINX con Node.js

Para configurar NGINX para Node.js, sigue estos pasos:

Paso 1: Instale NGINX

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.

Paso 2: configurar NGINX como proxy inverso para Node.js

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.

  1. Navegue al directorio de configuración de NGINX:
   cd /etc/nginx/sites-available/
  1. Cree un nuevo archivo de configuración NGINX para su aplicación Node.js:
   sudo nano nodeapp.conf
  1. Agregue la siguiente configuración:
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;
    }
}
  1. Habilite la configuración creando un enlace simbólico al directorio habilitado para sitios:
   sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
  1. Pruebe la configuración de NGINX para detectar errores de sintaxis:
   sudo nginx -t
  1. Si todo está bien, reinicie NGINX:
   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.

NGINX como equilibrador de carga para Node.js

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:

  1. Cree o edite su archivo de configuración de NGINX (nodeapp.conf):
   sudo nano /etc/nginx/sites-available/nodeapp.conf
  1. Agregue la siguiente configuración para habilitar el equilibrio de carga:
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;
    }
}
  1. Guarde el archivo, pruebe la configuración y reinicie NGINX:
sudo nginx -t
sudo systemctl restart nginx

Explicación:

  • El bloque ascendente define múltiples servidores Node.js (localhost:3000, localhost:3001 y localhost:3002), y NGINX equilibrará el tráfico entrante entre estos servidores.
  • NGINX utiliza un algoritmo de operación por turnos de forma predeterminada, enviando solicitudes a cada servidor por turno.

Esta configuración distribuye la carga de manera uniforme entre múltiples instancias de Node.js, mejorando la escalabilidad y la tolerancia a fallas.

Sirviendo contenido estático con NGINX

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.

  1. Cree un directorio para sus archivos estáticos (por ejemplo, /var/www/html/static/):
   sudo mkdir -p /var/www/html/static
  1. Mueva sus archivos estáticos (CSS, imágenes, JS) a este directorio.

  2. 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;
    }
}
  1. Pruebe la configuración y reinicie NGINX:
sudo nginx -t
sudo systemctl restart nginx

Explicación:

  • Las solicitudes de archivos estáticos (por ejemplo, su_dominio_o_IP/static/style.css) serán atendidas directamente por NGINX desde el directorio /var/www/html/static/, lo que reduce la carga en su servidor Node.js.

Terminación SSL con NGINX

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:

  1. Obtener un certificado SSL. Puede obtener un certificado SSL gratuito de Let’s Encrypt o utilizar cualquier otra autoridad certificadora.

  2. 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;
}
  1. Probar y reiniciar NGINX:
sudo nginx -t
sudo systemctl restart nginx

Explicación:

  • La directiva listening 443 ssl garantiza que NGINX escuche el tráfico HTTPS.
  • ssl_certificate y ssl_certificate_key especifican las rutas a su certificado SSL y clave privada.
  • Una redirección de HTTP a HTTPS garantiza que todo el tráfico utilice SSL.

Conclusió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.

Declaración de liberación Este artículo se reproduce en: https://dev.to/imsushant12/nginx-for-nodejs-applications-what-why-and-how-to-use-it-1gbn?1 Si hay alguna infracción, comuníquese con Study_golang @163.com eliminar
Último tutorial Más>

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