nginx: /openapi.json перехватывался SPA-фолбэком вместо схемы backend
FastAPI отдаёт /openapi.json на корневом пути (маршруты backend объявлены с явным префиксом /api/... в декораторах, а не через APIRouter(prefix=)), поэтому запрос попадал в catch-all location / (раздача index.html фронта) раньше, чем мог бы дойти до backend — снаружи схема API была недоступна, что мешало отладке. Добавлен точный location = /openapi.json, проксирующий на backend:8000 (матчится раньше catch-all за счёт приоритета exact-match в nginx).
This commit is contained in:
@@ -156,6 +156,20 @@ server {
|
||||
return 403;
|
||||
}
|
||||
|
||||
# --- Схема OpenAPI: FastAPI отдаёт её на КОРНЕВОМ пути /openapi.json (не
|
||||
# под /api/ — маршруты backend объявлены с явным префиксом /api/... в
|
||||
# декораторах, а не через APIRouter(prefix=...), см. backend/main.py),
|
||||
# поэтому без этого location запрос попадал бы в SPA-фолбэк ниже
|
||||
# (`location /` отдаёт index.html фронта вместо схемы — мешало отладке).
|
||||
location = /openapi.json {
|
||||
set $backend_upstream http://backend:8000;
|
||||
proxy_pass $backend_upstream;
|
||||
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-Proto $scheme;
|
||||
}
|
||||
|
||||
# --- Медиа (аватары): раздача напрямую из volume, в обход backend. ---
|
||||
location /media/ {
|
||||
alias /media/;
|
||||
|
||||
Reference in New Issue
Block a user