Пытаюсь повесить на один домен и 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 или гайдах по деплою не написано как решить такую проблему.