¿Qué puertos debo node.js escuchar en? Cómo y por qué?

Mi node.js las aplicaciones que he escuchando en el puerto 80 para http y 443 para https, que yo creía que era bastante práctica estándar.

Sin embargo, un número de ejemplos que he leído recientemente el uso de otros puertos (por ejemplo, 8080 y 8081) para escuchar http/https, y, a continuación, utilizar otros medios tales como iptables o ufw reglas para servir a los puertos 80 /443 a través de redireccionamiento de paquetes a/de los otros.

Ver dos ejemplos aquí y aquí.

Así que mi pregunta es ¿por qué no me quieren escuchar directamente a los puertos 80 y 443?

Hay problemas de seguridad en la mano? Es simplemente un caso de estos autores no tener permisos para escuchar en puertos inferiores a 1024 (me iba a encontrar esta sorprendente?)? La mayoría de las personas ejecutar Apache a lo largo del lado del nodo? (Yo no).

Asumiendo que hay una buena razón de por qué no quiero escuchar directamente a los 80 y/o 443, que método debo utilizar para tráfico de retransmisión de 80 /433 a mi puertos alternativos de elección?

He mencionado iptables y ufw anteriormente, es una de estas mejores que los demás, o hay algún otro método que se debe utilizar? La respuesta depende de si estoy en el equilibrio de mi carga entre los procesos?

Gracias de antemano.

  • creo que es porque necesita permisos de root para ejecutar en los puertos inferiores a 1024 y no quieres eres una aplicación para tener root, sin embargo hay maneras de enlazar stil. yo personalmente uso AuthBind
  • Si no estoy equivocado, el puerto 1337 se está convirtiendo en un estándar para ejecutar nodejs en. Para ejecutar aplicaciones, puede utilizar NGINX como servidor proxy inverso.
InformationsquelleAutor Joshua | 2013-02-18

1 Kommentar

  1. 14

    La primera línea del primer artículo que enlaza a las menciones de la razón.

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

    Para el nodo para enlazar el puerto 80 o 443, tendría que ejecutar como root, lo que no es una buena idea.

    El método que se utiliza para desviar el tráfico a los puertos más altos corresponde a usted. El iptables es el menos intensivo de los recursos, y el más sencillo. Otro método sería utilizar NginX/Apache servidor proxy en el Nodo. Yo diría que la principal ventaja de este método es que se puede servir también cosas como archivos estáticos a partir de ahí, y no tener que servir a ellos a través del Nodo.

    Apache y NginX están diseñados explícitamente para ser muy bueno para servir los archivos estáticos, por lo que son muy buenos en eso, mientras que el Nodo es un conjunto de JS medio ambiente, con todos los costes que intervienen. Nodo es grande en la entrega de un montón de conexiones simultáneas, y que sin duda puede servir archivos perfectamente bien para cargas normales, pero va a utilizar más recursos de los que NginX para hacerlo.

    Mediante un HTTP-consciente como proxy de Apache/NginX también significa que usted puede fácilmente configurar varias instancias de Nodo para ejecutar diferentes subdominios, o incluso de diferentes rutas de acceso en el mismo dominio.

    • ¿Cuáles son las ventajas de usar NginX/Apache para servir los archivos en lugar de Nodo?
    • Actualizado.
    • pero si se utiliza el enfoque con Apache o NginX…que significa, que estos servidores de la necesidad de la raíz-privilegios para escuchar en el puerto 80, derecho?.. así que ¿por qué no es un problema para ellos, pero para node.js que es?
    • Los servidores no se ejecutan como usuario. Cuando se inicia, generalmente, usted les está diciendo a inicio y, a continuación, cambiar a ejecutar como su propio usuario, y las secuencias de comandos de instalación para ellos han establecido sus usuarios tengan acceso a los puertos. Usted podría hacer lo mismo para su propio usuario si realmente quería, pero la mayoría de la gente Nodo de ejecución detrás de algunos de los proxy.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea