Dobra, myślę, że teraz rozumiem.
Dlaczego nginx nie może bezpośrednio wywołać mojej aplikacji Flask?
Ponieważ nginx
nie obsługuje specyfikacji WSGI. Technicznie rzecz biorąc, nginx mógłby zaimplementować WSGI
specyfikację, gdyby chciał, po prostu tego nie zrobił.
W takim przypadku potrzebujemy serwera WWW, który implementuje specyfikację, do której służy uWSGI
serwer.
Zauważ, że uWSGI
jest to pełnoprawny serwer http, który może i działa dobrze samodzielnie. Używałem go w tej roli kilka razy i działa świetnie. Jeśli potrzebujesz bardzo dużej przepustowości dla zawartości statycznej, możesz trzymać się nginx
przed uWSGI
serwerem. Gdy to zrobisz, będą komunikować się za pośrednictwem protokołu niskiego poziomu, znanego jako uwsgi
.
„Co do czego ?! Kolejna rzecz zwana uwsgi ?!” ty pytasz. Tak, to zagmatwane. Kiedy się odwołujesz, uWSGI
masz na myśli serwer http. Kiedy mówisz o uwsgi
(wszystkie małe litery), mówisz o protokole binarnym , którego uWSGI
serwer używa do komunikacji z innymi serwerami, takimi jak nginx
. Wybrali złe imię na tym.
Dla każdego, kto jest zainteresowany, napisałem o tym artykuł na blogu , zawierający więcej szczegółów, trochę historii i kilka przykładów.