【问题标题】:Nginx reverse proxy + load balancing for uwsgi and flask applicationuwsgi和flask应用的Nginx反向代理+负载均衡
【发布时间】:2016-11-08 07:07:56
【问题描述】:

我读过一篇关于配置 nginx 到反向代理的教程

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

在配置文件中,我们使用sock

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的位置,那将如何使用呢?

编辑:我也读过这样定义套接字的教程

socket = :5000

并且配置文件中没有提到socket。

负载均衡的时候是这样的吗?

【问题讨论】:

  • 这有什么更新吗?我也有同样的问题
  • @florin 我偶然发现了同样的问题,这个答案很好地解决了这个问题(尽管对于 Kubernetes):stackoverflow.com/a/44533608/1039281
  • 您可以将套接字定义为服务器,例如server unix:/home/user/myproject/myproject.sock; 而不是 ip 或域,我还看到 http://backend 中不需要前缀 http://。我还没有让它工作,所以你可能会遇到问题。

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


【解决方案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 服务器前的负载平衡。

【讨论】:

  • 感谢您的回答。但是我的问题更多的是关于配置文件中套接字的定义,以及是否需要这个定义。
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 2013-05-01
  • 1970-01-01
  • 2020-03-06
  • 1970-01-01
相关资源
最近更新 更多