Django和nginx。我还需要apache吗?

Django和nginx。我还需要apache吗?,django,nginx,fastcgi,wsgi,Django,Nginx,Fastcgi,Wsgi,我已经搜索了这个主题,建议是nginx应该提供静态文件,而apache+wsgi应该提供处理Django的服务。这些信息很多都是几年前的事了,所以我想知道是否有一种方法可以在不降低性能的情况下简化这些信息,而只依赖Nginx、fastCGI和/或wsgi 我不熟悉非heroku部署,所以这就是为什么我听起来好像不知道自己在说什么 如果你想走nginx路线,最好的选择是: nginx->gunicorn nginx->uWSGI 在FASTCGI之上运行Python WSGI应用程序通常不是很

我已经搜索了这个主题,建议是nginx应该提供静态文件,而apache+wsgi应该提供处理Django的服务。这些信息很多都是几年前的事了,所以我想知道是否有一种方法可以在不降低性能的情况下简化这些信息,而只依赖Nginx、fastCGI和/或wsgi


我不熟悉非heroku部署,所以这就是为什么我听起来好像不知道自己在说什么

如果你想走nginx路线,最好的选择是:

  • nginx->gunicorn
  • nginx->uWSGI
在FASTCGI之上运行Python WSGI应用程序通常不是很好的体验,因为FASTCGI/WSGI适配器存在问题,以及它们如何与服务器一起部署

Apache/mod_wsgi仍然是一个可接受的解决方案,当以以下方式运行时,它实际上会以更少的资源表现得更好:

  • nginx->Apache/mod\u wsgi
因为瓶颈不会是web服务器,最终你选择哪一个并不重要,只要你设置正确,这是大多数人不会做的,因为那里的网站没有足够的流量,或者他们没有适当的监控来知道他们需要更改什么

总的来说,选择你认为更容易管理的是开始时最好做的事情

有关您真正的性能瓶颈是什么以及监控的重要性的一些背景信息,请观看:


就这么说吧,你提到了赫罗库。现在Heroku只有一个选择,那就是使用gunicorn,你不必担心nginx。但这本身就是一个问题,因为gunicorn本身并不是服务静态媒体资产的好选择,Heroku几乎强迫它在其他地方服务静态资产。

不,您不需要Apache+wsgi和Nginx+fCGI/wsgi。Nginx可以非常快速地提供静态文件,它将使用fCGI/wsgi处理其余的请求

您应该阅读本问题[1]的答案以及其中提到的其他相关问题


[1]

对于Python web应用程序来说,FASTCGI并不是一个很好的体验。你有证据吗?FastCGI只是一个协议,值得注意的是,它是一个具有错误报告和keepalive支持的非常好的协议。为试图让Python web应用程序在mod_Python、FastCGI、SCGI、AJP和WSGI变体上运行的人提供支持的五年来,FastCGI一直是最奇怪的问题。ApacheFastCGI更是如此,但nginx紧随其后。当您尝试使用Python时,您典型的web托管公司FASTCGI产品也非常糟糕。对于某些背景,请阅读一下,您似乎混淆了协议及其实现。Apache不是nginx。nginx fastcgi有什么问题?当我说“体验”时,我指的是围绕用于fastcgi的WSGI适配器的部署体验,以及设置服务器以使用户部署WSGI应用程序变得简单的机制。我并不反对FASTCGI协议本身,不管它是在什么服务器上实现的,而是它的部署经验。正如我过去在博客中所说的,它可以做得更好,但仍然很差,特别是使用Apache/mod_fcgid.Nginx作为代理,所以您喜欢的任何东西都可以与它一起使用。