在Amazon EC2上运行应用程序服务器的nginx infront的目的是什么?

我一直在对后端架构进行大量的研究。 我目前在亚马逊的Web服务上运行django应用服务器和postgresql数据库服务器。 我所有的内容都是通过Gunicorn服务的。 我想知道为什么nginx服务器放在django应用服务器的前面。 他们的目的是什么? 这是一张图表:

https://d36cz9buwru1tt.cloudfront.net/architecture_diagram_praekelt-1.jpg

在许多栈中,nginx通常放置在独angular兽或gunicorn的前面,用于caching对慢速客户端的响应。

有关更多信息,请参见nginx文档:

http://wiki.nginx.org/HttpProxyModule#proxy_buffering

ELB不做缓冲,所以有Nginx的地方可以节省你的培根。

通常情况下,你将反向代理放在后端服务器(如java世界中的tomcat)之前,因为它们具有更多的function并且更具弹性。

例如,对于nginx,您可以添加细粒度的访问控制,终止SSL,而不会受到DOS攻击(这是在他们的文档中特别提到的gunicorn( http://docs.gunicorn.org/en/latest/deploy .html )。

在EC2中,如果没有使用nginx或haproxy的特殊function,则可以用ELBreplacenginx和haproxy。 请参阅http://harish11g.blogspot.com/2012/11/amazon-elb-vs-haproxy-ec2-analysis.html来比较ELB和haproxy。