nginx - несколько приложений django одного домена, разные URL - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу обслуживать несколько проектов django (на самом деле приложения django rest API) в одном домене, но обслуживать каждый из них по отдельному URL.как это:

  1. http://test.com/app1/...
  2. http://test.com/app2/...

и так далее.Я буду использовать nginx для его настройки.Но я сталкиваюсь с некоторыми проблемами, которые требуют вашей помощи:

  1. Эти приложения должны иметь разные файлы cookie друг для друга.потому что у них другая система аутентификации.поэтому токен и cookie в одном не действительны для другого.Как с этим справиться?
  2. Какие конфиги nginx вы рекомендуете.

Примечание:

Мне не нужны подробности, потому что я знаю концепции.подойдут только некоторые подсказки и полезные команды.

Обновление:

Например, у меня есть приложение django с URL-адресом test.и я хочу, чтобы этот путь обслуживался на сервере с /app1/test.Проблема заключается в том, что когда отправляется запрос на /app1/test, Django не распознает его как /test, а вместо /app1/test, и, поскольку /app1 не зарегистрирован в urls.py, выдаст ошибку 404.

Вот пример моей конфигурации nginx:

server {
listen 80;
server_name test.com;

location /qpp1/ {
    include uwsgi_params;
    proxy_pass http://unix://home//app1.sock;
}

location /qpp2/ {
    include uwsgi_params;
    proxy_pass http://unix://home//app2.sock;
}
}

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете попробовать поиграть с директивой proxy_cookie_path:

server {

    ...

    location /app1/ {
        proxy_cookie_path / /app1/;
        proxy_pass http://backend1/;
    }

    location /app2/ {
        proxy_cookie_path / /app2/;
        proxy_pass http://backend2/;
    }
}

Обновление

Вот еще один вариант конфигурации для тестирования.

upstream qpp1 {
    server unix:/home/.../app1.sock;
}

upstream qpp2 {
    server unix:/home/.../app2.sock;
}

server {
    listen 80;
    server_name test.com;

    location /qpp1/ {
        include uwsgi_params;
        proxy_cookie_path / /qpp1/;
        proxy_pass http://qpp1/;
    }

    location /qpp2/ {
        include uwsgi_params;
        proxy_cookie_path / /qpp2/;
        proxy_pass http://qpp2/;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...