Il motivo è storico.
PHP
PHP è nato per fornire un modo semplice per creare pagine web dinamiche. Nel 1994, significherebbe:
- Implementa il tuo server, il che significa trascorrere mesi a fare lavori noiosi e complessi,
- Oppure usa CGI e fai affidamento su un server Web esistente con supporto CGI, come NCSA httpd.
Non sorprende che, dato l'obiettivo originale di PHP, Rasmus Lerdorf abbia deciso di adottare la seconda opzione, che ha portato PHP a essere compatibile con il successore di NCD httpd-Apache. Da allora, PHP rimane apache-friendly, tanto quanto lo stack LAMP è tra le cose più facili da configurare per un programmatore principiante.
PHP è sempre stato un linguaggio e nient'altro. Non è un server web e non era destinato a essere un server web; invece, si basa su un server Web come vettore di esecuzione principale.
Node.js
Le cose erano molto diverse per Node.js. Nel 2009, Node.js è nato come reazione ai server esistenti, incluso Apache:
Dahl criticized the limited possibilities of the most popular web server in 2009, Apache HTTP Server, to handle a lot of concurrent connections (up to 10,000 and more) and the most common way of creating code (sequential programming), when code either blocked the entire process or implied multiple execution stacks in the case of simultaneous connections.
Fonte: Wikipedia .
In questo contesto, difficilmente Node.js si affida al server Apache (o IIS, o qualsiasi altra cosa). Il modello di elaborazione di Node.js è sostanzialmente diverso, il che rende impossibile l'integrazione con WSGI o CGI.
Se PHP è un linguaggio, Node.js no. Node.js è un ambiente di runtime che consente di eseguire JavaScript al di fuori del contesto di un browser. Ciò rende Apache un concorrente di Node.js. Ti sorprende che IIS non abbia bisogno di Apache per essere eseguito?
Python
Python è molto simile a PHP. Il server SimpleHTTPS che hai citato nella tua domanda non è destinato alla produzione, quindi finisci per ospitare la tua applicazione in Gunicorn o Apache (o in un altro server, a seconda delle tue preferenze), esattamente come fai con PHP.
Stessa logica qui: scrivere un server HTTP completo non è un compito facile, e anche abbastanza inutile: poiché la maggior parte degli amministratori di sistema hanno familiarità con Apache, perché creare qualcosa di nuovo, quando si può semplicemente rendere Python compatibile con WSGI?