Nginx反向代理+ uwsgi和flask应用程序的负载平衡

时间:2016-07-06 09:22:35

标签: sockets nginx load-balancing reverse-proxy uwsgi

我已经阅读了有关将nginx配置为反向代理的教程

https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-14-04

在配置文件中,我们使用袜子

server {
    listen 80;
    server_name server_domain_or_IP;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/user/myproject/myproject.sock;
    }
}

现在,我正在阅读其他教程,以便与nginx进行负载平衡

https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-load-balancing https://www.upcloud.com/support/how-to-set-up-load-balancing/

然而,奇怪的是我们不再需要配置文件中套接字的位置。

upstream backend  {
  server backend1.example.com;
  server backend2.example.com;
  server backend3.example.com;
}

server {
  location / {
    proxy_pass  http://backend;
  }
}

是否正常或是否与uwsgi有特异性?

我是否需要在配置文件中添加套接字的位置,或者不需要它们?如果是这样,怎么样? 在服务器上,我是否需要创建套接字?如果配置文件没有指定套接字的位置,它将如何使用?

编辑:当插件以这种方式定义时,我也读过教程

socket = :5000

并且配置文件中没有提到套​​接字。

这是负载平衡时的方法吗?

1 个答案:

答案 0 :(得分:1)

您需要定义'后端'某处。尝试这样的事情:

upstream backend {
    least_conn;  # this is your load balancing strategy, see http://nginx.org/en/docs/http/load_balancing.html#nginx_load_balancing_methods

    server 172.16.10.10;
    server 172.16.10.12;
}

现在我看到你使用袜子了。我从来没有使用过这个,所以不确定如何定义后端内部的内容。我在这里展示的例子是在http服务器前面进行负载均衡。