feat(web): React-фронтенд вместо Flet + fix restore rmtree на bind-mount
web-react/: SPA Vite+React+TS, nginx раздаёт статику и проксирует /api на api:8000 по локалке. docker-compose: web(Flet)->web-react на :80. transfer_crud.backup_restore: чистим содержимое data/radar вместо rmtree точки монтирования (EBUSY).
This commit is contained in:
36
web-react/nginx.conf
Normal file
36
web-react/nginx.conf
Normal file
@@ -0,0 +1,36 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
|
||||
# Статика SPA: всё неизвестное отдаём index.html (клиентский роутинг)
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
# Прокси на внутренний API-контейнер (браузер к api:8000 напрямую не ходит).
|
||||
# Префикс /api срезается: /api/auth/login -> http://api:8000/auth/login
|
||||
#
|
||||
# Используем встроенный DNS Docker (127.0.0.11) и переменную в proxy_pass,
|
||||
# чтобы nginx переразрешал имя `api` на каждый запрос. Иначе nginx кэширует
|
||||
# IP при старте и ломается (502), если контейнер api перезапустился и сменил IP.
|
||||
location /api/ {
|
||||
resolver 127.0.0.11 valid=10s ipv6=off;
|
||||
set $api_backend api;
|
||||
rewrite ^/api/(.*)$ /$1 break;
|
||||
proxy_pass http://$api_backend:8000;
|
||||
proxy_http_version 1.1;
|
||||
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;
|
||||
proxy_read_timeout 60s;
|
||||
}
|
||||
|
||||
# Кэш статических ассетов с хэшем в имени
|
||||
location /assets/ {
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user