Как правильно указывает @ prof.phython, вам нужно запустить отдельный процесс gunicorn для каждого из приложений. Это приводит к тому, что каждое приложение работает на отдельном порту.
Затем создайте отдельный восходящий блок под http
для каждого из этих серверов приложений:
upstream app1 {
# fail_timeout=0 means we always retry an upstream even if it failed
# to return a good HTTP response
# for UNIX domain socket setups
#server unix:/tmp/gunicorn.sock fail_timeout=0;
# for a TCP configuration
server 127.0.0.1:9000 fail_timeout=0;
}
Очевидно, соответственно измените заголовок и номер порта для каждого вышестоящего блока.
Затем под вашим http->server
блоком определите следующее для каждого:
location @app1_proxy {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
# we don't want nginx trying to do something clever with
# redirects, we set the Host: header above already.
proxy_redirect off;
proxy_pass http://app1;
}
Убедитесь, что последняя строка там, указывает на то, что вы назвали вышестоящим блоком (app1), и @app1_proxy
также должны быть специфичны для этого приложения.
Наконец, в блоке http->server
используйте следующий код для сопоставления URL-адреса с сервером приложений:
location /any/subpath {
# checks for static file, if not found proxy to app
try_files $uri @app1_proxy;
}