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