dev

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

Usando fechas como enteros en Javascript

Para obtener la fecha y hora actual en milisegundos desde el 1 enero de 1970 a las 0 horas UTC:

let now = new Date().getTime();

Producirá una valor para now que al momento de escribir esto es:

1566991302957

La operación inversa la logramos dando la FechaHora en milisegundos al constructor de Date y usando el método que podemos ver en el código:

let readable = new Date(now).toLocaleString();

Lo que producirá una salida semejante a:

2019-8-28 1:28:50 PM

Relacionado

Cómo instalar Deno en Debian 10

Para instalar deno en Debian 10 desde una terminal

curl -fsSL https://deno.land/x/install/install.sh | sh
nano $HOME/.bash_profile

y añadimos

export DENO_INSTALL="/home/$USER/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"

y reiniciamos

Relacionado

deno -v
deno --help
deno
deno https://deno.land/welcome.ts