与 apache+mod_wsgi 相比,使用 nginx+uwsgi 是否有监控/维护开销?

与 apache+mod_wsgi 相比,使用 nginx+uwsgi 是否有监控/维护开销?

我们热衷于在基于 django 的应用程序中使用 nginx + uwsgi,因为我们想尝试更新的解决方案,并且听说 nginx 比 apache 更节省资源。

在 Quora 上读到一位 Django 的创建者对 apache 的一些看法后:

http://www.quora.com/What-web-server-suits-Django-best

I'm still a big fan of a stripped down Apache+mod_wsgi running behind nginx.    
Nginx handles static files, gzip, trickling to slow clients, load balancing and 
having  a configuration language that's actually pleasant to work with.    
Apache just sits there serving up dynamic Python pages via mod_wsgi, using the 
shortest  possible config.The reason I like Apache for this is I don't need to
babysit the process at all, unlike if I was using FastCGI or running a separate
Python app server.

我不打算为不同目的设置 2 个 Web 服务器,更希望 nginx 单独完成所有工作,而 django 则使用 uwsgi。我有几个问题:

  • “根本不需要照看整个过程”是什么意思?与 apache+mod_wsgi 相比,nginx+uwsgi 是否需要额外的努力?

  • 据说 Nginx 内置了对 uwsgi 的支持,而没有对 gunicorn 的支持,这是什么意思?

答案1

“照看”部分是关于手动启动 uWSGI/gunicorn 进程(通过诸如 Supervisor、monit 或简单的 rc 脚本之类的工具)。

一年多以前,uWSGI 使用 uWSGI Emperor 解决了这个“问题”,它会以一种非常简单的方式帮你管理实例(只需将配置文件放到目录中)。因此,一个设置需要一个用于 nginx 的启动脚本和一个用于 apache 的启动脚本,而另一个设置需要一个用于 nginx 的启动脚本和一个用于 uWSGI Emperor 的启动脚本(因此我们的比例是 2:2)。

关于 nginx 中的 uwsgi 支持,它与“uwsgi 协议”有关,而不是 uWSGI 应用服务器。它是一种比 http 更简单的传输,因此它可以带来一些性能优势并添加一些特定功能(例如直接传递 WSGI 变量)。您不必使用 uwsgi 协议,您只需以 http 模式启动 uWSGI(如 gunicorn)并正常代理它即可。

话虽如此,请考虑到当前的 uWSGI python 代码库与 mod_wsgi 非常相似(mod_wsgi 作者在修复 uWSGI python 错误方面提供了很多帮助),所以如果您不需要特定的 uWSGI 功能,那么您将不会比真正精简的 apache+mod_wsgi 获得特别的优势。

相关内容