如何配置Nginx,Gunicorn来运行2个具有不同域名的Django服务器

时间:2019-06-16 04:07:29

标签: django nginx gunicorn

我有运行virtualenv的DjangoServer1和DjangoServer2,其中安装了gunicorn。 nginx已安装在Ubuntu中的用户下。

我使DjangoServer1在nginx,gunicorn下运行。

服务器IP:12.12.12.12

DjangoServer1的网站域为mydomain1.com

DjangoServer2的网站域为mydomain2.com

这是DjangoServer1的nginx服务器配置。

/ etc / nginx / sites-available / DjangoServer1

server {
    listen 0.0.0.0:80;
    server_name 127.0.0.1;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
            root /home/user/develop/DjangoServer1;
    }

    location / {
            include proxy_params;
            proxy_pass http://unix:/home/user/develop/DjangoServer1/DjangoServer1.sock;
    }
}

我启动DjangoServer1:

1)在virtualenv下,运行gunicorn命令以启动DjangoServer1

gunicorn --daemon --workers 3 --bind unix:/home/user/develop/DjangoServer1/DjangoServer1.sock DjangoServer1.wsgi

2)然后,运行:

sudo服务nginx重新启动

3)在路由器中,我将端口80(8000)转发到服务器12.12.12.12

4)在浏览器中,输入:12.12.12.12。 DjangoServer1有效。输入:mydomain1.com,DjangoServer1有效。

现在,我想在同一服务器上运行DjangoServer2:12.12.12.12

问题:如何将DjangoServer1和DjangoServer2配置为不同的端口?

如何运行gunicorn命令以使用其他端口?以下命令使用端口8000?为什么?

gunicorn --daemon --workers 3 --bind unix:/home/user/develop/DjangoServer1/DjangoServer1.sock DjangoServer1.wsgi

如何配置nginx文件?

1 个答案:

答案 0 :(得分:1)

更改您的Gunicorn命令以在指定端口上运行服务器。

gunicorn --daemon --workers 3 --bind :8080 DjangoServer1.wsgi

现在更改您的NGINX conf文件,以将其转发到Application Server。

upstream django-server-1 {
    server 0.0.0.0:8080;
}


server {
    listen 0.0.0.0:80;
    server_name 127.0.0.1;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
            root /home/user/develop/DjangoServer1;
    }

    location / {
            include proxy_params;
            proxy_pass http://django-server-1;
            proxy_next_upstream off;
    }
}

重新启动NGINX服务。

这会将所有到达80端口的请求转发到您的应用程序服务器DjangoServer1

如果您明确希望将来自8080的请求转发到您的应用程序服务器,请更改NGINX配置中的server块或使用规则创建新的服务器块。