Fix production auth by proxying /api to backend in remote builds.

Remote frontend nginx now forwards API requests to Django so login and registration work when the host proxy only routes to port 8080.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
gitrusprus
2026-06-29 09:33:54 +03:00
co-authored by Cursor
parent ce4e9ac5e6
commit 10e7d65a00
6 changed files with 70 additions and 13 deletions
+10 -8
View File
@@ -11,21 +11,23 @@
# sudo apache2ctl configtest && sudo systemctl reload apache2
<VirtualHost *:80>
ServerName your-domain.com
ServerAlias www.your-domain.com
ServerName social.deepfishing.ru
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "http"
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
# Backend API (раскомментируйте при VITE_DATA_MODE=remote и profile with-backend)
# ProxyPass /api http://127.0.0.1:8000/api
# ProxyPassReverse /api http://127.0.0.1:8000/api
# Frontend SPA (nginx в контейнере sg_frontend)
# Вариант A (рекомендуется): весь трафик на frontend-контейнер.
# В remote-сборке frontend сам проксирует /api → backend.
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
# Вариант B: проксировать /api напрямую на backend (если frontend без nginx.remote.conf)
# ProxyPass /api http://127.0.0.1:8000/api
# ProxyPassReverse /api http://127.0.0.1:8000/api
# ProxyPass / http://127.0.0.1:8080/
# ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog ${APACHE_LOG_DIR}/social-graph-error.log
CustomLog ${APACHE_LOG_DIR}/social-graph-access.log combined
</VirtualHost>
+7 -3
View File
@@ -116,12 +116,15 @@ cd /opt/social-graph
### Remote (frontend + backend)
> Обязательно: `VITE_DATA_MODE=remote` в `.env.prod` и профиль `with-backend` — иначе вход/регистрация не работают (ошибка 405).
```bash
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod build
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d --build frontend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod --profile with-backend up -d --build backend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod --profile with-backend up -d --build
```
Команда поднимает **оба** контейнера. Frontend в remote-сборке проксирует `/api` → backend внутри Docker.
### Только frontend (local)
```bash
@@ -320,8 +323,9 @@ sudo ufw enable
| Симптом | Решение |
|---------|---------|
| **405 Not Allowed** при входе/регистрации | Запросы `/api` попали во frontend вместо backend. Пересоберите с `VITE_DATA_MODE=remote` (в образе включится `nginx.remote.conf`) **и** поднимите backend: `--profile with-backend` |
| 502 на https://social.deepfishing.ru | `docker ps`, логи `sg_frontend` / `sg_backend` |
| Страница открывается, API 404 | В прокси включён `ProxyPass /api``:8000` |
| Страница открывается, API 404 | Backend не запущен или нет прокси `/api` |
| 401 / не пускает | `USE_JWT_AUTH=true` в `.env.prod`, пересобрать backend |
| Данные не сохраняются между устройствами | `VITE_DATA_MODE=remote`, пересобрать frontend |
| Белый экран | `docker logs sg_frontend`, пересборка с `--build` |