nginx + uwsgi用于使用多个端口的多个站点

时间:2014-06-17 00:33:50

标签: python nginx uwsgi

我想在一个IP地址1.2.3.4中托管2个站点。 我想通过使用不同的端口来访问它们。例如,我希望siteA有1.2.3.4:8000,而1.2.3.4:9000指向siteB。我正在使用nginx + uwsgi。

以下是配置其中一个站点的示例。 对于NGINX,我有:

server {
listen   8000; ## listen for ipv4; this line is default and implied
location / {
    uwsgi_pass unix:///tmp/uwsgi.sock;
    include uwsgi_params;
    uwsgi_read_timeout 1800;
    }   
}

对于UWSGI,我有:

[uwsgi]
socket = /tmp/uwsgi.sock
master = true
harakiri = 60
listen = 5000
limit-as = 512
reload-on-as = 500
reload-on-rss = 500
pidfile = /tmp/uwsgi.pid
daemonize = /tmp/uwsgi.log
**chdir = /home/siteA**
module = wsgi_app
plugins = python

要访问siteA,我简单地转到1.2.3.4:8000。

我对一个站点的配置没有问题,但我不知道它是否可以使用两个站点。 请注意,我没有使用服务器名称绑定站点。有关系吗? 提前谢谢。

P.S。以下是我启动NGINX和UWSGI的方式。 我首先在 / etc / nginx / sites-available / 目录中放置了nginx conf文件(对于siteA,我称之为siteA_for_ngxing.conf)。

然后我使用 uwsgi --ini uwsgi.ini 来启动uwsgi。 (uwsgi.ini的文件包含上面的[uwsgi])... 有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

以下示例可能对您没用,因为您似乎手动安装了uWSGI,而不是使用系统存储库。但我想,你可以很容易地找到如何在Ubuntu上配置uWSGI并在你的系统上进行相同的配置。

这是我在Ubuntu上的表现。我从Ubuntu repo安装了uWSGI和nginx,所以我得到了以下的目录:

/etc/nginx/sites-available
/etc/nginx/sites-enabled
/etc/uwsgi/apps-available
/etc/uwsgi/apps-enabled

/etc/uwsgi/apps-available我放置了两个文件:app_a.iniapp_b.ini。这些文件中没有选项socket(以及piddaemonize)。 uWSGI将使用ini文件名检测套接字,日志和pid文件名。然后我在/etc/uwsgi/apps-enabled中为这些文件创建了符号链接以启用应用。

对于nginx,我使用了/etc/nginx/sites-available/default配置文件(已经符号链接到enabled dir)。

upstream app_a {
    server unix:///run/uwsgi/app/app_a/socket;
}
upstream app_b {
    server unix:///run/uwsgi/app/app_b/socket;
}

server {
    listen 8000;

    location / {
        uwsgi_pass app_a;
        include uwsgi_params;
    }
}
server {
    listen 9000;

    location / {
        uwsgi_pass app_b;
        include uwsgi_params;
    }
}