Задать вопрос
@NyxDeveloper

Почему переадресация на django в Nginx не работает со специальным урлом?

Пытаюсь повесить на один домен и API и фронтенд, конфиг выглядит так:
upstream django {
    server localhost:8000;
}

server {
    listen      443 ssl;
    listen      80;
    server_name ...;
    ssl_certificate             /etc/ssl/..._bundle.crt;
    ssl_certificate_key         /etc/ssl/..._private.key;

    charset     utf-8;
    root        /home/.../dist;

    location ^~ / {
        index  index.html index.htm;
        try_files $uri $uri/ @rewrites;
    }
    location @rewrites {
        rewrite ^.*$ /index.html last;
    }

    location /static {
        alias /home/..._api/static;
    }

    location ^~ /api {
        try_files $uri @proxy_to_app;
    }
    location @proxy_to_app {
        proxy_pass http://django;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
}


Ко всем url в urlpatterns я добавил /api/ в начало урла, и через порт :8000 все цепляется.
Nginx тоже запускается, но при попытке обратиться к https://domen_name.domen/api/../ по любому url возвращает стандартную ошибку django 404. Почему такая схема не работает и какую использовать? А может я что-то не донастроил?
Еще проблема в том, что если в объектах есть картинки, ModelSerializer рест фреймворка берет корневой url из запроса, а он реврайтится, поэтому картинки на фронт приходят не с теми url.
Нигде в официальной документации Daphne или гайдах по деплою не написано как решить такую проблему.
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
gunicorn недонастроил
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы