Student Jack
Student Jack

Reputation: 1035

nginx + uwsgi for multiple sites using multiple ports

I would like to host 2 sites in one IP address 1.2.3.4 for example. I want to visit them by using different ports. For example, I would like to have 1.2.3.4:8000 for siteA, while 1.2.3.4:9000 to point to siteB. I am using nginx + uwsgi.

Here is the example to configure one of sites. For NGINX, I had:

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;
    }   
}

For UWSGI, I had:

[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

To visit siteA, I simple go to 1.2.3.4:8000.

I have no problem with configuration of one site, but I have no idea to make it working with two sites. Please note that I didnot bind the site with the server name. Does it matter? Thanks in advance.

P.S. The following is the way I launch NGINX and UWSGI. I first put the nginx conf file (for siteA, I called it as siteA_for_ngxing.conf) in the /etc/nginx/sites-available/ directory.

I then use uwsgi --ini uwsgi.ini to start uwsgi. (the file of uwsgi.ini contains the above [uwsgi])... Any help?

Upvotes: 1

Views: 4033

Answers (1)

Dmitry Vakhrushev
Dmitry Vakhrushev

Reputation: 1382

The following example might be useless for you, because it seems you installed uWSGI manually, instead of using system repository. But I think, you can easly find how uWSGI is configured on Ubuntu and make the same configuration on your system.

Here how I have done it on Ubuntu. I installed both uWSGI and nginx from Ubuntu repo, so I got the following dirs:

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

On /etc/uwsgi/apps-available I placed two files: app_a.ini and app_b.ini. There is no option socket (as well as pid and daemonize) in these files. uWSGI will detect socket, log, and pid file names using ini-file name. Then I created symlink to these files in /etc/uwsgi/apps-enabled to enable apps.

For nginx I used /etc/nginx/sites-available/default config file (it already symlinked to 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;
    }
}

Upvotes: 2

Related Questions