use*_*447 75 nginx django uwsgi
关于在部署Django应用时如何配置nginx配合uWGSI的教程有很多。
但是为什么我需要在这个套件中使用 nginx?uWSGI 本身可以服务 WSGI Python 应用程序,可以服务静态文件,也可以做 SSL。nginx 可以做什么而 uWSGI 不能?
Kro*_*mey 65
你没有。
无论如何,这就是简单的答案——你不需要它。uWSGI 本身就是一个功能强大的服务器。
然而,像 nginx 这样的其他服务器存在的时间更长,并且(无论如何)更安全,并且具有 uWSGI 不支持的附加功能——例如,改进对静态资源的处理(通过 Expires 或 E-Tag 的任意组合)标头、gzip 压缩、预压缩 gzip 等)可以显着降低服务器和网络负载;此外,在 Django 应用程序前面的像 nginx 这样的服务器也可以实现动态内容的缓存,进一步帮助减少服务器负载,甚至有助于促进 CDN 的使用(这通常不适用于动态内容)。您甚至可以更进一步,在完全独立的服务器上使用 nginx,将动态内容的请求反向代理到负载均衡的应用服务器集群,同时处理静态内容本身。
例如,我的博客(虽然它是 WordPress,但它前面确实有 nginx)调整为缓存帖子 24 小时,缓存索引页面 5 分钟;虽然我在大部分时间都没有看到足够的流量来真正重要,但它帮助我的小 VPS 经受住了偶尔的激增,否则可能会使其崩溃——例如当我的一篇文章被选中时流量激增由拥有数千名粉丝的推特用户上传,其中许多人将其转发给了数千名粉丝。
如果我一直在运行一个“裸”的 uWSGI 服务器(并假设它是一个 Django 站点,而不是 WordPress),它可能会很好地经受住它的考验——或者它可能会崩溃并烧毁,让我错过访客. 将 nginx 放在它前面来处理该负载真的很有帮助。
话虽如此,如果您只是运行一个不会看到大量流量的小站点,则没有真正需要 nginx 或其他任何东西——如果您想要这样做,只需单独使用 uWSGI。另一方面,如果您会看到大量流量......好吧,您可能仍然需要 uWSGI,但您至少应该考虑在它前面的一些东西来帮助负载。实际上,您真的应该对已完成的站点的不同配置进行负载测试,以确定在您的预期负载下什么最适合您,并使用最终的配置。
IMO,如果您将网站放在互联网而不是实验室中,您可能会看到差异。
想象一下来自另一个国家/地区的低网速用户打开网络浏览器来访问您的网站。uWSGI将在线程中处理该Http连接。由于网络速度较低,该线程可能会花费相当长的时间来等待完整的 Http 请求。如果你的线程池大小是100,想象一下100个用户都这么慢,会发生什么?没有空闲线程来处理其他 Http 请求。
但 Nginx 的情况就完全不同了。Nginx 采用“反应堆模式”设计。你可以用谷歌搜索“Reactor Pattern”来看看它是如何工作的。总之,连接速度慢并不影响它处理其他Http请求。
| 归档时间: |
|
| 查看次数: |
28806 次 |
| 最近记录: |