Estoy confundido en cuanto a por qué cuando construyo una aplicación de nodo/express no necesito usar otro servidor web, pero cuando trabajo con Java o Spring o un backend de python, generalmente se usa un servidor web como nginx o apache. Me estoy confundiendo en cuanto a lo que hacen Apache y nginx, ¿no solo manejan las solicitudes HTTP como lo hacemos en el nodo o express? Pero luego, en Spring hay controladores que manejan las solicitudes, entonces, ¿por qué necesitamos tener JBoss o Apache ejecutándose?
En los viejos tiempos había una separación estricta entre la "aplicación" y el "servidor de aplicaciones"/"servidor web". Los servidores de aplicaciones (como JBoss) proporcionaban la configuración de los recursos (conexiones a DB por ejemplo), etc. a la aplicación desplegada en ellos. Los servidores web (como Apache) proporcionaron la configuración para posiblemente múltiples aplicaciones web alojadas en ellos.
Actualmente, en la era de las aplicaciones autohospedadas (lo que significa: aplicaciones que contienen un servidor HTTP incorporado), a menudo no necesita un servidor web separado. Pero las herramientas como Nginx todavía se usan, por ejemplo, como equilibradores de carga, etc. Los servidores de aplicaciones (JBoss, etc.) no se usan con frecuencia hoy en día, debido a los servidores HTTP integrados que puede configurar sin pedirle a Ops-people que lo haga. para usted - es más rápido y más conveniente.
Si está escribiendo una aplicación NodeJS, entonces no "necesita" otro servidor, excepto quizás cuando está escalando una implementación lista para producción.
La respuesta simple es que express, Apache, nginx y JBoss son todos servidores web . Dado que todos estos son servidores web, cada uno puede hacer el trabajo del otro. Sin embargo, cada uno de ellos tiene fortalezas y debilidades, por lo que muchas veces pueden trabajar juntos. Por ejemplo, una práctica común es colocar un servidor express detrás de nginx para permitir que nginx maneje el equilibrio de carga, los activos estáticos y la terminación SSL, en lo que nginx es muy bueno, pero tal vez deje que las conexiones API y websocket caigan en el servidor express, que es lo que express suele ser. bueno en.
Un desarrollador puede elegir Apache si está trabajando con PHP porque la integración es muy buena, pero puede elegir JBoss si está trabajando con Java EE.