许多基于Amazon EC2的Django应用程序部署使用HTTP服务器NGINX和Gunicorn。
我想知道他们实际上做了什么以及为什么两者并行使用。同时运行它们的目的是什么?
答案 0 :(得分:71)
它们不是并行使用的。 NGINX是 reverse proxy 。这是排在第一位的。它接受传入的连接并决定它们下一步应该去哪里。它(通常)也提供静态媒体,如CSS,JS和图像。它还可以执行其他操作,例如通过SSL加密,缓存等。
Gunicorn是下一层,是 application server 。 NGINX看到传入连接是www.domain.com
并且知道(通过配置文件)它应该将该连接传递给Gunicorn。 Gunicorn是WSGI服务器,基本上是:
Web服务器与Web应用程序或框架之间的简单通用接口
Gunicorn的工作是管理和运行Django实例(类似于在开发期间使用django-admin runserver
)
与此设置的对比是将Apache与mod_wsgi
模块一起使用。在这种情况下,应用程序服务器实际上是Apache的一部分,作为模块运行。
答案 1 :(得分:0)