【问题标题】:Django, why would I need nginx and uWSGI during hosting?Django,为什么我在托管期间需要 nginx 和 uWSGI?
【发布时间】:2020-11-21 05:05:42
【问题描述】:

我有在 Pythonanywhere 平台上托管简单 Django 项目的经验(我不必安装 nginx 和 uWSGI)。

很多人在 Django 中使用 nginx+Uwsgi,为什么需要这样做?

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

Heroku / Pythonanywhere 平台是否默认包含所有这些内容?

【问题讨论】:

    标签: django nginx uwsgi


    【解决方案1】:

    PythonAnywhere 开发人员:是的,没错——我们确实安装了 nginx 和 uWSGI。当您在我们网站的“Web”页面上创建网站时,幕后发生的事情是(简化一点)我们为您生成适当的 nginx/uWSGI 配置文件并启动所有内容,以便您只需要处理Django 代码。

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

    nginx 旨在快速、高效和安全,因此当您的网站位于公共 Internet 上并因此受到大量流量(如果您幸运并且您的网站起飞)以及黑客的滥用。当然,这并不是说它会自动使您的网站快速且安全,但至少这意味着您从正确的系统开始。它在提供静态文件(如 CSS、JavaScript、图像等)方面也比 Django 好得多,因为它就是为此而构建的。

    uWSGI 旨在接收传入的 Web 请求,并快速有效地将它们的处理委托给多个工作进程,然后整理响应并将它们发送回 nginx。

    当然,理论上所有这些都可以内置到 Django 中——但是 Django 团队需要做很多工作,而重新发明轮子而不是专注于 Django 提供其真正优势的领域,即轻松快速开发复杂的网站。

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 2018-11-04
      • 2014-08-09
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      相关资源
      最近更新 更多