Конфигурация 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, который в свою очередь должен использовать его в качестве префикса во всех адресах.
Хотя я никогда не пробовал это в реальном проекте.