L'esecuzione di diversi processi del server Web in parallelo non è affatto un problema, le persone lo fanno sempre.
Tuttavia, dal momento che solo un processo può mai ascoltare su una determinata porta, non possono entrambi eseguire direttamente sulla porta 80, quindi sarà necessario effettuare la distribuzione in qualche modo. Una soluzione semplice è eseguire l'applicazione Node.js su una porta personalizzata (qualsiasi cosa sopra il 1024 dovrebbe essere un gioco equo, ma prima fai un po 'di ricerche e rendila configurabile), quindi imposta un proxy inverso in apache per passarlo attraverso sulla porta 80 (o 443 se hai bisogno di SSL) per gli URL che dovrebbero andare su Nodo.
Anche il proxy inverso da Node in apache potrebbe essere possibile, e se l'applicazione Node gestisce le chiamate più critiche per le prestazioni, potrebbe o meno essere una soluzione migliore.
Una terza soluzione è quella di servirli entrambi su porte diverse e di eseguire il reverse proxy in un processo separato o anche in una macchina separata. Il vantaggio di questo è che dividere il setup su più server applicativi (ad esempio, scatole dedicate per le parti Node e PHP) in seguito è relativamente banale (ma poi, non è molto più difficile per le altre due soluzioni).
La parte interessante di avere Apache sul lato pubblico è che puoi usare le sue varie funzionalità mature come l'autenticazione HTTP, la riscrittura, SSL, gli host virtuali, la pubblicazione di file statici, ecc., così la parte Node può concentrarsi su l'essenziale. Non c'è bisogno di reinventare la ruota lì.