Cómo Virtualmin Apache Reverse Proxy y Nodejs

Gran título, ¿ verdad? Veamos como hacer funcionar Node con Virtualmin Open Source. La versión pro tiene incluido el instalador para Node, pero la GPL lleva tan sólo unas poquitas aplicaciones para instalar. Seguramente nos valga, pero si queremos además usar Node tenemos que hacer unos pequeños cambios.

Primero instalamos node al gusto de nuestra distribución. Cómo instalar Node en Debian 10 podría servirte en caso de necesitar instalarlo en Debian / Ubuntu.

Después creamos un servidor con un dominio.com que dispongamos usando Virtualmin.

Seguidamente añadimos la configuración para el Reverse Proxy. Un Reverse Proxy (proxy inverso) simplemente es que cuando el servidor reciba una petición en una ruta concreta Apache se desentiende y pasa la petición a un puerto que le indiquemos. Para esto, vamos a Virtualmin -> Services -> Configure Website -> Edit Directives y añadimos al final:

<Location /nodejs>
      ProxyPass http://127.0.0.1:3000
      ProxyPassReverse http://127.0.0.1:3000
</Location>

Guardamos y reiniciamos Apache (Webmin -> Dashboard -> Servers Status -> Apache WebServer -> Restart Apache)

Con esto que hemos añadido hacemos que cuando algo solicite a la direccion dominio.com/nodejs Apache pasa esta conexion a aquello que esté escuchando en el puerto 3000. Nosotros queremos que quien escuche sea node.

Para probar que funciona creamos un fichero de texto llamado app.js en el servidor que será ejecutado con un usuario que puede ejecutar node.

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Lo ejecutamos con:

node app.js

Finalmente vamos con nuestro navegador a la dirección dominio.com/nodejs y si todo va bien nos mostrará el mensaje Hello World.

Eso es todo.

Código de node.org

Relacionado

sudo service apache2 restart
nano app.js

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *