Web /应用服务器配置(Nginx / uWSGI / Django)

时间:2018-10-11 01:41:30

标签: django nginx server

这可能是一个愚蠢的问题,但对我来说,要找到答案并不容易。

我想开发一个在aws ec2实例上提供python应用程序的网站。 因此,我认为将Nginx和Django与uWSGI一起使用可能是最好的选择

我的问题是 考虑到可伸缩性,此系统的最佳架构是什么?以及我该怎么做?

起初,我想使用一个Nginx服务器和多个Django应用服务器,以便我可以管理资源(将请求分配到多个应用服务器,因为它的工作可能很繁重-基于协作过滤的推荐)

现在我仅使用一个ec2实例(微型服务器)进行开发

使用体系结构Nginx-> uWSGI-> Django项目

那么,拆分服务器以实现负载平衡的最佳方法是什么?以及如何使用Nginx做到这一点?

请让我知道这个问题是否太含糊!

如果您知道与此问题有关的任何污点文章或书籍,请随时推荐!

谢谢!

3 个答案:

答案 0 :(得分:0)

如果我正确解释了您的问题,则您想使用我们服务器上的NGINX安装django应用程序。 请参阅此链接https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04

答案 1 :(得分:0)

您应该让Amazon进行负载平衡。使用其application load balancers可以轻松设置,并且性能要比您自己配置的任何功能都要好。

在每个实例上将nginx和gunicorn保持在一起,并让ALB在它们之间分配负载。

答案 2 :(得分:0)

我在使用AWS LB时遇到问题,而在使用AWS的负载平衡器时,它并没有耗尽连接,因此我使用nginx进行负载平衡,并且它在多后端gunicorn节点的单台服务器上都能很好地工作。

您可以在上游使用minimum_conn参数来解决您的目的,并且它在集群中查找最少的连接也非常快。

upstream <upstream_name> {
  least_conn;
  server 192.168.1.1:3000 fail_timeout=10s;
  server 192.168.1.2:3000 fail_timeout=10s;
  }

upstream_name将是您通过proxy_pass传递的名称