Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Nginx Última actualización: 24 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Acelere el tiempo de carga de aplicaciones web Node.js, Socket.io aprovechando Nginx para servir archivos estáticos

Node.js es un excelente entorno de ejecución JavaScript, que puede utilizar para servir activos web completos(dinámicos estáticos) desde él

Si está trabajando en un proyecto pequeño y experimental entonces probablemente esté bien, sin embargo, si el tiempo de respuesta está preocupado entonces debe considerar el uso de un servidor web como Nginx delante de Node.js para servir archivos estáticos

En realidad, no sólo para servir archivos estáticos sino también desde el punto de vista de la seguridad debería considerar Nginx

Últimamente, estuve trabajando en Herramientas Geekflare (Website SEO & Security Analyzer) donde utilicé Node.js, Socket.io, y pude mejorar significativamente el tiempo de respuesta al descargar los archivos estáticos de Nginx

aws-lb

Como puede ver, cuando trasladé los archivos estáticos a Nginx eldía 29, el tiempo de respuesta disminuyó drásticamente

Así que si usted está utilizando Node.js para entregar una imagen, js, CSS, fuente, etc, a continuación, dar un pensamiento y considerar la separación de los deberes

Echemos un vistazo a cómo hice esto

Esto supone que tiene Nginx y Node.js instalados. Haga una copia de seguridad de la configuración existente antes de modificarla para poder volver atrás si las cosas van mal.

  • Vaya a la ubicación donde está instalado Nginx (por defecto en SO basados en UNIX como CentOS/Ubuntu sería /etc/nginx)
  • Vaya a sitios-disponibles
  • Cree un nuevo archivo con lo siguiente (para facilitar la comprensión puede nombrar el archivo como su nombre de dominio)
upstream backend {
server localhost:3000;
}

server {
listen 80;
server_name siterelic.com;

root /var/tools/public;

location / {
try_files $uri @backend;
}

location @backend {
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Lo siguiente es necesario para la compatibilidad con Websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

}


}

Hay los cinco bloques cruciales arriba, déjeme ir a través de uno por uno

  • Upstream - especifique la variable como "backend" y proporcione la información del servidor node.js y el puerto. En un ejemplo, he dado localhost:3000 lo que significa que estoy ejecutando node.js en el mismo servidor como Nginx con número de puerto 3000.
  • Servidor - dar el número de puerto, que Nginx debe estar escuchando, y el nombre del servidor como su nombre de dominio.
  • Raíz - el directorio desde donde desea servir los archivos estáticos.
  • Ubicación - esto es importante. Le estoy pidiendo a Nginx que intente buscar archivos en el directorio especificado con la ubicación raíz y si no coincide entonces vaya a @backend que es node.js
  • Location@backend - esta es la configuración genérica del proxy node.js websocket.io

Habilite el sitio en /etc/nginx/sites-enabled creando un simbólico

cd /etc/nginx/sites-enabled

ln

-s /etc/nginx/sites-available/$yourdomainname

Reinicie el Nginx y ¡diviértase!

Con la configuración anterior, pude mejorar el tiempo de respuesta significativamente, y espero que usted también lo haga

Si usted es nuevo en Nginx, entonces usted puede estar interesado en aprender cómo construir un servidor Nginx de alto rendimiento desde cero.

  • Chandan Kumar
    Autor
    Chandan Kumar es el fundador de Geekflare. Ha ayudado a millones de personas a destacar en el ámbito digital. Apasionado de la tecnología, su misión es explorar el mundo y ampliar el crecimiento de profesionales y empresas.
Gracias a nuestros patrocinadores
Más lecturas sobre Nginx
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder