Django,为什么在托管期间我需要nginx和uWSGI?

Django,为什么在托管期间我需要nginx和uWSGI?,django,nginx,uwsgi,Django,Nginx,Uwsgi,我有在Pythonywhere平台上主持简单Django项目的经验(我不必安装nginx和uWSGI) 许多人将nginx+Uwsgi与Django一起使用,为什么需要这样做 我希望nginx是一个web服务器、负载平衡器、邮件代理和HTTP缓存。Uwsgi是一个Web服务器网关接口 所有这些东西都默认包含在Heroku/Pythonywhere平台中吗?Pythonywhere开发者:是的,没错——我们确实安装了nginx和uWSGI。当您在我们网站的“Web”页面上创建一个网站时,我们会(稍

我有在Pythonywhere平台上主持简单Django项目的经验(我不必安装nginx和uWSGI)

许多人将nginx+Uwsgi与Django一起使用,为什么需要这样做

我希望nginx是一个web服务器、负载平衡器、邮件代理和HTTP缓存。Uwsgi是一个Web服务器网关接口


所有这些东西都默认包含在Heroku/Pythonywhere平台中吗?

Pythonywhere开发者:是的,没错——我们确实安装了nginx和uWSGI。当您在我们网站的“Web”页面上创建一个网站时,我们会(稍微简化)为您生成适当的nginx/uWSGI配置文件,并启动所有程序,这样您只需要处理Django代码

之所以需要这些工具(或类似的工具,如Apache和mod_wsgi),是因为Django的内置Web服务器不是为生产使用而设计的。您可以运行它的“manage.py runserver”命令,让它在您自己的机器上提供页面,但它所使用的系统并不是为了安全或效率而设计的——它只是为您提供了一种简单的方法,让您能够运行某些东西以进行调试。其他Python web框架(如Flask和web2py)的内置web服务器也是如此

nginx的设计是快速、高效和安全的,因此当您的网站位于公共互联网上,因此受到大量流量(如果您运气好,并且您的网站起飞)以及黑客的滥用时,它是处理传入web请求的更好选择。当然,这并不是说它会自动让你的网站变得快速和安全,但至少这意味着你从正确的系统开始。它在服务静态文件(比如CSS、JavaScript、图像等)方面也比Django好得多,因为它就是为静态文件而构建的

uWSGI设计用于接收传入的web请求,并快速高效地将处理这些请求的任务委托给多个工作进程,然后整理响应并将其发送回nginx

当然,从理论上讲,所有这些都可以构建到Django中——但Django团队要做到这一点需要做大量的工作,他们重新发明轮子,而不是专注于Django提供其真正好处的领域,使快速开发复杂网站变得容易,这将是浪费时间