Конфигурация Nginx для 2 приложений django 2 разные конечные точки 1 серверный хост

Проблема в том, что у меня есть 1 ip (127.0.0.1, например)

на моем сервере живет 2 разных django приложения

1. /api     0.0.0.0:8000
2. /data    0.0.0.0:8090
3. /        this will go to default pages served up by nodejs

Мне нужно выяснить конфигурацию nginx, как развернуть эти отдельные сервисы, каждый со своей собственной базой данных.

при навигации, если конечная точка достигнута, она будет направлена в соответствующее приложение, в противном случае она будет направлена по умолчанию в приложение nodejs.

дополнительная информация: при входе в /api/admin/ он перенаправляется в /admin и не работает Пожалуйста, примите во внимание перенаправления, сделанные django. Я перепробовал много вещей, включая установку Host, или Location

Это будет баунти через 2 дня, так что счастливой охоты.

текущий nginx

upstream app1 {
    server 0.0.0.0.0:8000;
}

upstream app2 {
    server 0.0.0.0.0:8090;
}

server {
    listen       80;
    server_name  localhost;


    location / {
        error_log /var/log/webapp/error.log debug;
        access_log /var/log/webapp/access.log;

        proxy_pass http://0.0.0.0:3000;
        proxy_redirect off;
    }

    location /api {
        location /api/static/ {
            alias /var/tmp/app1/static/;
            #autoindex on;
        }
        proxy_pass http://app1;
        proxy_redirect off;
    }

    location /data {
        location /api/static/ {
            alias /var/tmp/app2/static/;
        }
        proxy_pass http://app2;
        proxy_redirect off;
    }
}

Вы используете gunicorn в качестве WSGI сервера?

В случае, попробуйте добавить это к существующей конфигурации nginx:

location /api {
    proxy_set_header SCRIPT_NAME /api;
    ...

location /data {
    proxy_set_header SCRIPT_NAME /data;
    ...
...

В принципе, SCRIPT_NAME будет передан gunicorn, который в свою очередь должен использовать его в качестве префикса во всех адресах.

Хотя я никогда не пробовал это в реальном проекте.

Вернуться на верх