Гаразд, я думаю, я зрозумів це зараз.
Чому nginx не може безпосередньо зателефонувати до моєї програми Flask?
Оскільки nginx
не підтримує специфікацію WSGI. Технічно nginx міг би реалізувати WSGI
специфікацію, якщо хотів, а просто не зробив.
У цьому випадку нам потрібен веб-сервер, який реалізує специфікацію, для чого і призначений uWSGI
сервер.
Зауважте, що uWSGI
це повноцінний http-сервер, який може працювати і працює добре самостійно. Я використовував його в цій якості кілька разів, і він чудово працює. Якщо вам потрібна надзвичайно висока пропускна здатність для статичного вмісту, тоді у вас є можливість прилипати nginx
до вашого uWSGI
сервера. Коли ви це зробите, вони будуть спілкуватися за протоколом низького рівня, відомим як uwsgi
.
"Що, що ?! Ще одна річ називається uwsgi ?!" Ви запитаєте. Так, це бентежить. Коли ви посилаєтесь, uWSGI
ви говорите про http-сервер. Коли ви говорите про uwsgi
(усі малі літери), ви говорите про двійковий протокол, який uWSGI
сервер використовує для спілкування з іншими серверами, наприклад nginx
. Вони вибрали погане ім’я для цього.
Для всіх, хто цікавиться, я написав про це статтю в блозі з більш детальною інформацією, трохи історії та кількома прикладами.