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.

Deja un comentario