如何使用nginx和Gunicorn设置负载均衡?

时间:2014-05-05 07:25:26

标签: django nginx configuration load-balancing gunicorn

我使用nginx,Gunicorn和Ubuntu 14.04设置了一个Django服务器。现在,我需要启用nginx作为负载均衡器。但是,我在网上找不到与此相关的任何内容,我不清楚如何在nginx上启用负载均衡,而gunicorn是我上游块的一部分。

根据nginx documentation,负载平衡至少需要以下基本设置:

http {
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

此设置清晰易懂。我使用gunicorn的配置如下所示,并包含对gunicorn.sock文件的引用。

http {
    upstream myapp1 {
        server unix:/home/myapp/run/stage/gunicorn.sock fail_timeout=0;
    } 
    server {
        listen 80;

        location / {
            if (!-f $request_filename) {
                proxy_pass http://myapp1;
                break;
            } 
        }
    }
}

如果你能帮助我解决以下问题,那就太棒了:

  1. 以下上游块是否正确以在此设置中启用负载平衡?

  2. 或者:我是否必须在其他服务器上引用.sock文件而不是使用例如srv2.example.com

  3. 我是否必须向所有服务器添加类似的块或仅添加到一台服务器?

    upstream myapp1 {
        server server unix:/home/myapp/run/stage/gunicorn.sock fail_timeout=0;
        server srv2.example.com;
        server srv3.example.com;
    } 
    
  4. 希望有人以前这样做过。

    谢谢你, 克里斯

0 个答案:

没有答案