2012-11-01 6 views
49

Viele Django-App-Implementierungen über Amazon EC2 verwenden die HTTP-Server NGINX und Gunicorn.Was ist der Zweck von NGINX und Gunicorn, die parallel laufen?

Ich fragte mich, was sie eigentlich tun und warum beide parallel verwendet werden. Was ist der Zweck, sie beide parallel zu betreiben?

+2

Siehe [diese Frage] (http://stackoverflow.com/questions/13004484/deploying-django-with-gunicorn-and-nginx/13004973#13004973), die in ein bisschen mehr Details geht als Timmy's Antwort. –

+0

@BurhanKhalid danke, das half – noahandthewhale

Antwort

65

Sie werden nicht parallel verwendet. NGINX ist ein reverse proxy. Es steht an erster Stelle. Es akzeptiert eingehende Verbindungen und entscheidet, wohin sie als nächstes gehen sollen. Es bedient (normalerweise) auch statische Medien wie CSS, JS und Bilder. Es kann auch andere Dinge wie Verschlüsselung über SSL, Zwischenspeicherung usw. tun.

Gunicorn ist die nächste Schicht und ist ein application server. NGINX sieht, dass die eingehende Verbindung für www.domain.com ist und über Konfigurationsdateien weiß, dass diese Verbindung an Gunicorn übergeben werden soll. Gunicorn ist ein WSGI-Server, der im Grunde ein:

einfache und universelle Schnittstelle zwischen Web-Server und Web-Anwendungen oder Frameworks

Gunicorn der Aufgabe, die Django-Instanz (en) (ähnlich zu verwalten und führen zu Verwendung django-admin runserver während der Entwicklung)

Der Kontrast zu diesem Setup ist Apache mit dem mod_wsgi Modul zu verwenden. In diesem Fall ist der Anwendungsserver tatsächlich ein Teil von Apache und wird als Modul ausgeführt.

+0

@Timmy O'Mahony, Was ist der Unterschied zwischen wsgi-Datei (kommt beim Erstellen von Django-Projekt) und Gunicorn – Shiva

+3

[Diese Antwort] (http://serverfault.com/questions/220046/why -is-setting-nginx-als-reverse-proxy-a-good-idee) geht tiefer in die Details und Vorteile von nginx ein. –