¿Es una buena práctica dejar que Node / Go /… actúe como un servidor web frontend?

1

Estoy acostumbrado a escribir cosas web en PHP y dejar que Apache o nginx manejen el manejo HTTP real y carguen mi código por cualquier medio (mod_php, fcgi, fpm, ...). Tengo la impresión de que esto es algo bueno (tm), ya que ha habido años y años de piratería, parcheo y mejora de estos servidores web, por lo que están "probados en la batalla".

Ahora, con "recién llegados" como Node o Go, me enfrento a la pregunta de cuál es la mejor manera de escribir aplicaciones web de producción en la vida real. Dudo en dejar que Node escuche en el puerto 80, ya que me temo que su mecanismo de manejo de HTTP no está tan probado como el de Apache / nginx (estoy pensando en clientes malvados, inundaciones, ataques DoS, etc.). Mi administrador "confirmó" esto al permitir que las aplicaciones de Node se ejecuten detrás de un nginx de proxy inverso.

¿Es este miedo racional? ¿O está totalmente bien omitir tener un servidor web dedicado y hacer el manejo completo de la solicitud en mi aplicación (incluido TLS)?

    
pregunta xrstf 28.02.2015 - 11:49
fuente

3 respuestas

1

El código bien probado ayuda a reducir el riesgo , pero incluso PHP continúa emitiendo parches para remediar los problemas de seguridad.

El problema no es con los "recién llegados", sino con las protecciones y controles adecuados sobre cualquier tipo de servicio que exponga. PHP / Apache / etc. comportarse (y fallar) de manera predecible, pero podemos predecir sus comportamientos porque nosotros tenemos experiencia con ellos y sabemos cómo responder.

Ya sea que use el código base más antiguo y con mayor mantenimiento en el planeta, o su propio producto personalizado de un fin de semana "hack-a-thon", todavía debe asegurarse de tener todas las protecciones apropiadas en su lugar. Desde esa perspectiva, el "miedo" de su administrador es perfectamente racional: agregue protecciones adicionales en torno a lo que no comprende por completo, incluso si eso significa que termina siendo una mano dura. Luego, puede ajustar, refinar y ajustar los controles a un nivel apropiado.

Es el trabajo de su administrador proteger el servidor y la infraestructura para que todos los servicios puedan proporcionar valor. Es su trabajo (supongo) proporcionar un servicio valioso a los interesados y clientes. Ambos necesitan trabajar juntos para que todos puedan ser atendidos.

    
respondido por el schroeder 28.02.2015 - 20:11
fuente
0

No usaría el nodo para la producción, pero ese es un tema diferente.

El uso de ngnix o Apache como proxy inverso proporcionará poca o ninguna ventaja de seguridad, ya que casi todo se pasa de forma transparente

    
respondido por el Damian Nikodem 01.03.2015 - 01:02
fuente
0

No usaría Apache, no obtendrás muchos beneficios allí.

nginx se puede usar junto con el nodo, ya que servirá archivos estáticos mucho más eficientemente que el nodo.

Haproxy delante del nodo puede ofrecerle un mejor equilibrio de carga, limitación de velocidad, que la que puede obtener con el nodo.

También puede descargar SSL (y SPDY / HTTPv2) a herramientas dedicadas (stunnel, stud) o usar módulos en haproxy o nginx.

Nada de esto es por razones de seguridad. Solo utilizando varias herramientas que son buenas individualmente en algunas cosas para construir un sistema que sea bueno en todo.

    
respondido por el OrangeDog 01.03.2015 - 12:27
fuente

Lea otras preguntas en las etiquetas