Una scelta molto popolare per l'esecuzione di applicazioni web Perl in questi giorni sembra essere dietro un server web nginx che inoltra richieste a un demone FastCGI oa un server Web abilitato PSGI (ad esempio, Starman) .nginx e Perl: FastCGI vs reverse proxy (PSGI/Starman)
Ci sono stati un sacco di domanda sul perché si potrebbe fare questo in generale (ad es Why use nginx with Catalyst/Plack/Starman?) e le risposte sembrano applicarsi in entrambi i casi (ad esempio, permettono nginx per servire contenuti statici, semplice riavvio del server di applicazione, bilanciamento del carico , ecc.)
Tuttavia, sono specificamente interessato ai pro/contro dell'uso di FastCGI rispetto all'approccio del reverse-proxy. Sembra che Starman sia ampiamente considerato il più veloce e migliore application/server per PSGI Perl, e sto facendo fatica a vedere alcuni vantaggi nell'usare FastCGI. Entrambi gli approcci sembrano sostenere:
- socket di dominio UNIX costavano come socket TCP
- server forcella/Process Manager stile proprio come i server non-bloccanti basati su eventi (ad esempio AnyEvent).
- segnale movimentazione/graceful restart
- PSGI
Analogamente, la configurazione nginx per entrambe le opzioni è molto simile.
Quindi perché scegliere uno rispetto all'altro?
indirizzo IP del client originale viene passato è passato X-Forwarded-For intestazione e l'intestazione host originale in X-Forwarded- Intestazione host, quindi i primi due aspetti negativi non sono importanti. – marpetr
+1 grazie per il confronto. Poiché è possibile eseguire un processo master per gestire processi e thread di back-end, il punto 3 non è un problema. Hai sollevato un punto interessante riguardante Zope e il modo di conoscere l'IP del client originale e il nome host per costruire URL validi – Viet