v2.0.10: загрузка через ВМ-буфер (паттерн drhider)
Deploy contracts-flask / validate (push) Canceled after 0s

- /api/upload_refs: pull файлов с ВМ (SSRF-guard, лимит 50МБ, ретраи, DELETE)
- uploadFile: PUT на WebDAV /contracts-upload/ → refs → pull
- nginx: location /contracts-upload/ (WebDAV + CORS для managed-фронта)
This commit is contained in:
“Naeel”
2026-08-24 21:45:46 +03:00
parent 4653aa5e8e
commit 78045f2c81
6 changed files with 193 additions and 52 deletions
+23
View File
@@ -92,6 +92,29 @@ server {
client_max_body_size 100m;
}
# ── VM-буфер загрузки contracts (паттерн drhider) ──────────────
# Браузер кладёт файл сюда PUT (мимо шлюза кластера ~64КБ), бэк тянет сам.
# Файлы: /var/www/contracts-upload/ (нужно создать, chown www-data).
# ⚠️ CORS: Access-Control-Allow-Origin должен совпадать с origin фронтенда.
location /contracts-upload/ {
client_max_body_size 1024m;
dav_methods PUT DELETE;
create_full_put_path on;
dav_access user:rw group:rw all:r;
root /var/www;
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin https://contractor.pythonk8s.dev.nubes.ru always;
add_header Access-Control-Allow-Methods "PUT, DELETE, OPTIONS" always;
add_header Access-Control-Allow-Headers "*" always;
add_header Content-Length 0;
return 204;
}
add_header Access-Control-Allow-Origin https://contractor.pythonk8s.dev.nubes.ru always;
add_header Access-Control-Allow-Methods "PUT, DELETE, OPTIONS" always;
add_header Access-Control-Allow-Headers "*" always;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/contracts.kube5s.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/contracts.kube5s.ru/privkey.pem; # managed by Certbot