Okay, ich glaube ich verstehe das jetzt.
Warum kann nginx meine Flask-Anwendung nicht direkt aufrufen?
Weil nginxdie WSGI-Spezifikation nicht unterstützt wird. Technisch gesehen könnte nginx die WSGISpezifikation implementieren, wenn sie wollten, sie haben es einfach nicht.
In diesem Fall benötigen wir einen Webserver, der die Spezifikation implementiert, wofür der uWSGIServer bestimmt ist.
Beachten Sie, dass dies uWSGIein vollwertiger http-Server ist, der selbstständig gut funktionieren kann und funktioniert. Ich habe es in dieser Funktion mehrmals verwendet und es funktioniert großartig. Wenn Sie einen extrem hohen Durchsatz für statische Inhalte benötigen, haben Sie die Möglichkeit, nginxvor Ihrem uWSGIServer zu bleiben . Wenn Sie dies tun, kommunizieren sie über ein Protokoll auf niedriger Ebene, das als bekannt ist uwsgi.
"Was zum was?! Eine andere Sache namens uwsgi?!" du fragst. Ja, es ist verwirrend. Wenn Sie referenzieren uWSGI, sprechen Sie von einem http-Server. Wenn Sie über uwsgi(alle Kleinbuchstaben) sprechen, sprechen Sie über ein Binärprotokoll, das der uWSGI Server verwendet, um mit anderen Servern wie zu sprechen nginx. Sie haben einen schlechten Namen gewählt.
Für alle, die interessiert sind, habe ich einen Blog-Artikel darüber geschrieben, der mehr Einzelheiten, ein bisschen Geschichte und einige Beispiele enthält.