很多Django应用程序部署超过亚马逊的EC2使用HTTP服务器NGINX和Gunicorn。
我想知道他们实际上做,为什么两个并联使用。 什么是并行运行他们两人的目的是什么?
很多Django应用程序部署超过亚马逊的EC2使用HTTP服务器NGINX和Gunicorn。
我想知道他们实际上做,为什么两个并联使用。 什么是并行运行他们两人的目的是什么?
他们不是在并行使用。 NGINX是一个反向代理 。 这是排在第一位。 它接受传入连接,并决定他们下一步去。 这也(通常)提供静态媒体,如CSS,JS和图片。 它也可以做其他事情,如通过SSL,缓存等加密
Gunicorn是下一层,并且是应用程序服务器 。 NGINX看到传入连接是用于www.domain.com
并且知道(通过配置文件),它应该通过该连接到Gunicorn。 Gunicorn是一个WSGI这基本上是一个服务器:
Web服务器和Web应用程序或框架之间的简单和通用接口
Gunicorn的工作是管理和运行Django的实例(S)(类似于使用django-admin runserver
发展过程中)
这种设置的对比是使用Apache与mod_wsgi
模块。 在这种情况下,应用服务器实际上就是Apache的一部分,跑作为一个模块。
Nginx的和Gunicorn在parrallel不使用。
下图显示了如何nginx的和Gunicorn互动。