Come far coesistere Apache e Node.js sullo stesso server

Una delle prime domande che mi sono posto quando ho iniziato a creare server web con Node.js è stata: come faccio a far coesistere Node.js e Apache sullo stesso server? Infatti, chi utilizza Apache e possiede una minima conoscenza di come funziona un server web ed un browser, sa che Apache è in ascolto sulla porta 80 ed implicitamente un browser fa richieste su quest’ultima. E quindi, come può Node.js gestire le richieste del browser senza spodestare Apache dal trono della porta 80? Perché mai dovrei rinunciare a tutti i benefici di PHP ad esempio?

Vediamo come risolvere in modo semplice e veloce utilizzando un ProxyPass!

La prima cosa da fare è installare il modulo necessario, a scopo didattico utilizzo Ubuntu come sistema operativo:

Subito dopo posso procedere all’attivazione del modulo di Apache:

Ora, tiriamo fuori l’asso dalla manica ed andiamo a modificare il VirtualHost che ci interessa (ovviamente fate riferimento al vostro):

ed aggiungiamo ad esempio:

Infine, riavviamo Apache per rendere effettive le modifiche con un:

In questa maniera, supponendo di avere Node.js in ascolto sulla porta 3000 e collegandoci su http://node.miosito.it (da notare che la richiesta viene fatta alla porta 80) verremo automaticamente dirottati sulla porta 3000 di Node.js, il qualche ci fornirà il risultato della richiesta come se fosse stata fatta direttamente sulla porta 3000.

Semplice, no?