nginx + uwsgi для нескольких сайтов, использующих несколько портов

Я хотел бы разместить 2 сайта на одном IP-адресе 1.2.3.4, например. Я хочу посещать их, используя разные порты. Например, я хотел бы иметь 1.2.3.4:8000 для сайта A, а 1.2.3.4:9000 для указания на сайт B. Я использую 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

Чтобы посетить сайт А, я просто захожу на 1.2.3.4:8000.

У меня нет проблем с настройкой одного сайта, но я понятия не имею, как заставить его работать с двумя сайтами. Обратите внимание, что я не привязывал сайт к имени сервера. Это имеет значение? Заранее спасибо.

P.S. Вот как я запускаю NGINX и UWSGI. Сначала я поместил файл конфигурации nginx (для siteA я назвал его siteA_for_ngxing.conf) в каталог /etc/nginx/sites-available/.

Затем я использую uwsgi --ini uwsgi.ini для запуска uwsgi. (файл uwsgi.ini содержит указанный выше [uwsgi])... Любая помощь?


person Student Jack    schedule 17.06.2014    source источник
comment
Вы пытались добавить server{ listen 9000; ... }   -  person furas    schedule 17.06.2014
comment
хорошо, если я поставлю сервер {слушай 9000; ... } . затем, когда я перехожу к 1.2.3.4:9000. Я все еще посещаю сайт А. Я думаю, что проблема связана с chdir = /home/siteA в настройках UWSGI.   -  person Student Jack    schedule 17.06.2014


Ответы (1)


Следующий пример может оказаться для вас бесполезным, потому что кажется, что вы установили uWSGI вручную, а не через системный репозиторий. Но я думаю, вы можете легко найти, как настроен uWSGI в Ubuntu, и сделать такую ​​же конфигурацию в вашей системе.

Вот как я это сделал на Ubuntu. Я установил и uWSGI, и nginx из репозитория Ubuntu, поэтому получил следующие каталоги:

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

На /etc/uwsgi/apps-available разместил два файла: app_a.ini и app_b.ini. Опция socket (а также pid и daemonize) в этих файлах отсутствует. uWSGI обнаружит имена файлов сокетов, журналов и pid, используя имя ini-файла. Затем я создал символическую ссылку на эти файлы в /etc/uwsgi/apps-enabled, чтобы включить приложения.

Для nginx я использовал файл конфигурации /etc/nginx/sites-available/default (он уже связан с каталогом enabled).

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;
    }
}
person Dmitry Vakhrushev    schedule 17.06.2014
comment
Привет, @dmitry-vakhrushev спасибо за хороший пост. Я до сих пор не могу сделать это правильно. Я сделал то, что вы сказали. Я также перезапускаю nginx и uwsgi??? Когда я теперь захожу на разные сайты, мне выдает 502 Bad Gateway... Между тем, где я могу найти файлы журналов для uwsgi? - person Student Jack; 10.07.2014
comment
Привет @StudentJack, ты проверял журналы uWSGI? Его нужно поместить в /var/log/uwsgi/ - person Dmitry Vakhrushev; 10.07.2014
comment
Привет @dmitry-vakhrushev... ты победил. веб-сайт сдается, показывая мне правильный путь, которым он должен быть. Это здорово. Спасибо. - person Student Jack; 11.07.2014
comment
из любопытства, когда я сделал то, что вы показали выше, похоже, у меня проблема с разрешением. Например, у меня были некоторые коды (на веб-сайте) для записи содержимого в файл. Но теперь это не удается. Любая мысль? - person Student Jack; 11.07.2014
comment
Это может произойти из-за того, что uWSGI запускается от имени системного пользователя (www-data по умолчанию используется в Ubuntu). - person Dmitry Vakhrushev; 11.07.2014