tutorial proyecto node examples ejemplos demos crear node.js http https port

proyecto - ¿Qué puertos debería escuchar node.js? ¿Como y por qué?



node js tutorial pdf (1)

Mis aplicaciones node.js tengo escuchado en el puerto 80 para http y 443 para https, que creí que era una práctica bastante estándar.

Sin embargo, varios ejemplos que he leído recientemente usan otros puertos (por ejemplo 8080 y 8081) para escuchar http / https, y luego usan otros medios como reglas de iptables o ufw para servir a los puertos 80/443 a través de paquetes de reencaminamiento hacia / desde los otros .

Vea dos ejemplos aquí y aquí .

Entonces mi pregunta es por qué no quiero escuchar directamente los puertos 80 y 443?

¿Hay problemas de seguridad a mano? ¿Es simplemente un caso de estos autores que no tienen permisos para escuchar en puertos de menos de 1024 (me parece sorprendente?)? ¿La mayoría de la gente ejecuta Apache a lo largo del nodo lateral? (Yo no).

Suponiendo que haya una buena razón por la cual no quiero escuchar directamente a 80 y / o 443, ¿ qué método debo usar para transmitir el tráfico desde 80/433 a mis puertos alternativos?

He mencionado iptables y ufw arriba, ¿es uno de estos mejor que los otros, o hay algún otro método que debería usar? ¿La respuesta depende de si estoy equilibrando mi carga entre procesos?

Gracias por adelantado.


La primera línea del primer artículo que vinculó menciona la razón.

Standard practices say no non-root process gets to talk to the Internet on a port less than 1024.

Para que el nodo se una al puerto 80 o 443 , necesitaría ejecutarlo como raíz, lo cual no es una buena idea.

El método que utilice para redirigir el tráfico a los puertos superiores depende de usted. El iptables es el menos intensivo en recursos y el más simple. Otro método sería usar NginX / Apache para proxy a Node. Yo diría que el principal beneficio de ese método es que también puede servir cosas como archivos estáticos desde allí, y no tener que servirlos a través de Node.

Apache y NginX están diseñados explícitamente para ser muy buenos en el servicio de archivos estáticos, por lo que son extremadamente buenos en eso, mientras que Node es un entorno completo de JS, con todos los gastos generales involucrados. Nodo es excelente para administrar muchas conexiones simultáneas, y ciertamente puede servir perfectamente a los archivos para cargas normales, pero utilizará más recursos que NginX para hacerlo.

El uso de un proxy compatible con HTTP como Apache / NginX también significa que puede configurar fácilmente múltiples instancias de Node para ejecutar diferentes subdominios, o incluso diferentes rutas en el mismo dominio.