因此,从Python / Flask文档中,他们都建议不要将Flask Web服务器作为生产Web服务器运行,这是有意义的.我的问题是,我能够在Nginx服务器上运行我的Flask应用程序吗?为什么互联网上的所有指南都建议在UWSGI,Tornado或其他一些WSGI服务器上包装Flask? WSGI是什么意思? Flask WGSI不兼容吗?
我特别失去了因为here,第一反应说:
Apache and Nginx are both HTTP servers.They can serve static files like
(.jpg and .html files) or dynamic pages (like a wordpress blog or forum written in a language like PHP or Python).
但是this帖子说:
Nginx is a web server. It serves static files,however it cannot execute and host
Python application. uWSGI fills that gap.
我的应用程序由服务器(例如:uWSGI)和另一台服务器(例如:Nginx)处理似乎效率低下.
最佳答案
Nginx是一个Web服务器,关注Web服务器的东西,而不是如何运行Python程序. uWSGI是一个应用服务器,知道如何用Python(现在和其他语言)说WSGI. Nginx和uWSGI都使用uWSGI协议,这是一种比UNIX套接字更有效的协议.
Nginx处理来自/响应外部世界的http请求(可能是负载平衡,缓存等). Flask应用程序处理WSGI请求/响应. uWSGI知道如何启动应用程序(可能使用多处理和/或线程)并弥合HTTP和WSGI之间的差距.
这种设置被称为reverse proxy.它允许每个工具做它擅长的事情而不关心过程的其他部分.没有什么特别低效的东西,直到你达到真正的大规模.