Sitio web de Que Hacen los Diputados
Necesitamos un servidor HTTP que redirija las llamadas al servidor, mediante un proxy inverso, a las aplicaciones node.js que estan corriendo en el servidor.
Además es necesario tener activado SSI (Sever Side Includes) para hacer funcionar correctamente la aplicacion node.js que corresponde al portal, ya que dicha aplicación hace uso de modulos reutilizables que se incluyen en distintas vistas.
- una api pública que accede a la base de datos para recopilar los datos requeridos https://github.com/quehacen/que_hacen_api
- un portal que representa los datos accediendo a la api (SSI activado en el servidor HTTP) https://github.com/quehacen/que_hacen_web
- un servidor web nginx que recoge las peticiones del cliente y redirige dichas peticiones mediante proxies inversos basados en urls, a la aplicación node.js correspondiente, las cuales corren en puertos diferentes.
browser <===> Servidor HTTP <===> portal web(node.js) | api(node.js) <===> MongoDB
Un ejemplo se produce cuando se hace una llamada a quehacenlosdiputados.net/diputados:
- nginx redirige la petición a la aplicación node.js que esta corriendo en el puerto 3001 que es la del portal,
- ésta llama a la api, la otra aplicacion node.js que esta corriendo en el puerto 3002,
- que recoge la información de los diputados de la Base de Datos y la entrega a la primera aplicación que se encargará de mostrarla al cliente.
Cuando se hace una llamada a la api.quehacenlosdiputados.net/diputados:
- nginx redirige esa llamada a la api, la otra aplicación node.js que esta corriendo en el puerto 3002
- que recoge la información de la Base de Datos y la muestra tal cual.
Para la gestión de dichas aplicaciones nosotros utilizamos PM2 que es una herramienta que consideramos muy util, no solo por la buena gestion interna que hace de dichos procesos (graceful shutdown, balanceo de procesos, monitorizacion, salida a logs, ...), ademas facilita la configuración de dichos procesos desde el terminal o desde un archivo de configuración externo.
La aplicación de este repositorio se distribuye bajo licencia GPLv3 http://www.gnu.org/licenses/gpl.txt