2012-11-01 9 views
49

Un sacco di distribuzioni di app Django su EC2 di Amazon utilizzano i server HTTP NGINX e Gunicorn.Qual è lo scopo di NGINX e Gunicorn in esecuzione in parallelo?

Mi chiedevo cosa fanno effettivamente e perché entrambi sono utilizzati in parallelo. Qual è lo scopo di eseguirli entrambi in parallelo?

+2

Vedere [questa domanda] (http://stackoverflow.com/questions/13004484/deploying-django-with-gunicorn-and-nginx/13004973#13004973) che va un po 'più in dettaglio della risposta di Timmy. –

+0

@BurhanKhalid grazie, che ha aiutato – noahandthewhale

risposta

65

Non vengono utilizzati in parallelo. NGINX è un reverse proxy. È il primo in linea. Accetta le connessioni in entrata e decide dove dovrebbero andare dopo. Inoltre (di solito) serve supporti statici come CSS, JS e immagini. Può anche fare altre cose come la crittografia via SSL, la memorizzazione nella cache ecc.

Gunicorn è il livello successivo ed è un application server. NGINX vede che la connessione in entrata è per www.domain.com e sa (tramite i file di configurazione) che dovrebbe passare tale connessione su Gunicorn. Gunicorn è un server WSGI che è fondamentalmente una:

semplice e interfaccia universale tra i server web e applicazioni web o quadri

lavoro di Gunicorn è quello di gestire ed eseguire l'istanza di Django (s) (simile a utilizzando django-admin runserver durante lo sviluppo)

Il contrasto con questa configurazione è utilizzare Apache con il modulo mod_wsgi. In questa situazione, il server delle applicazioni è in realtà una parte di Apache, in esecuzione come modulo.

+0

@Timmy O'Mahony, Qual è la differenza tra il file wsgi (proveniente dalla creazione del progetto django) e gunicorn – Shiva

+3

[Questa risposta] (http://serverfault.com/questions/220046/why -is-setting-nginx-as-a-reverse-proxy-a-good-idea) approfondisce i dettagli e i vantaggi di nginx. –