Poner un proxy inverso en node-red para ocultar los puertos
Exponer puertos a internet es una mala practica que puede acarrear ataques innecesarios. Tenemos la ocasión perfecta para utilizar un proxy inverso, ocultar los puertos y darle un aspecto de url normal. Utilizaremos apache2 (en este caso corriendo en un Ubuntu).
En este caso será para ocultar el puerto por defecto de nodered que es el 1880 y lo transformaremos en una elegante url con un aspecto /nodered
Nota: existen aplicaciones como traefik que se encargan de gestionar esto.
Primero activamos los módulos de Apache que necesitamos:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel
Cambiamos en el settings.js de nodered la opción httpRoot:
// The following property can be used in place of 'httpAdminRoot' and 'httpNodeRoot', // to apply the same root to both parts. httpRoot: '/nodered',
Modificar el archivo /etc/apache2/sites-enabled/000-default.conf
nano /etc/apache2/sites-enabled/000-default.conf
Después añade estas líneas, la primera para el websocket, y la segunda para la aplicación:
ProxyPass "/nodered/comms" "ws://localhost:1880/nodered/comms" ProxyPassReverse "/nodered/comms" "ws://localhost:1880/nodered/comms"
ProxyPass /nodered http://localhost:1880/nodered ProxyPassReverse /nodered http://localhost:1880/nodered
Y ahora nuestra aplicación será accesible desde http://domain.com/nodered
Lógicamente esto sirve para cualquier aplicación que queramos exponer a internet.