Я следую этому руководству uwsgi, чтобы настроить nginx/uwsgi
на 1 Приложение flask запускает поддомен «www», а другое приложение flask запускает поддомен «api». Мой nginx.conf
:
worker_processes 1;
events {
worker_connections 1024;
}
http {
access_log /path/to/access_nginx.log combined;
error_log /path/to/error_nginx.log crit;
include mime.types;
sendfile on;
server {
server_name api.example.com;
listen 14265;
location / {
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT wsgi_api;
uwsgi_pass unix:///path/to/api.sock;
}
}
server {
server_name www.example.com;
listen 14265;
location / {
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT wsgi;
uwsgi_pass unix:///path/to/wsgi.sock;
}
}
}
Для запуска uwsgi я делаю:
#!/bin/bash
APPNAME=nginx
# Start uwsgi
${HOME}/webapps/${APPNAME}/bin/uwsgi \
--uwsgi-socket "${HOME}/webapps/${APPNAME}/wsgi.sock" \
--master \
--workers 1 \
--max-requests 10000 \
--harakiri 60 \
--daemonize ${HOME}/webapps/${APPNAME}/uwsgi.log \
--pidfile ${HOME}/webapps/${APPNAME}/uwsgi.pid \
--vacuum \
--python-path ${HOME}/webapps/${APPNAME}
# Start nginx
${HOME}/webapps/${APPNAME}/bin/nginx
Когда я посещаю www.example.com
, он работает, как и ожидалось. Однако я получаю ошибку 502 для api.example.com
. Чтобы исправить ошибку 502, я могу изменить api.sock
на wsgi.sock
в своем nginx.conf
, но это даст мне страницу для www.example.com
при посещении api.example.com
(хотя wsgi.py
и wsgi_api.py
разные).
РЕДАКТИРОВАТЬ: Все примеры, которые я нашел для настройки нескольких субдоменов на nginx/uwsgi (включая тот, на который я ссылался), показывают, как делать субдомены со статическими сайтами. Я не могу найти тот, который показывает, как это сделать с сокетами unix.