fix(caddy): закрыть генерацию архивов Forgejo — она съедала диск
All checks were successful
CI Trade-In / changes (pull_request) Successful in 13s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 15s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
All checks were successful
CI Trade-In / changes (pull_request) Successful in 13s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 15s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
Внешний обходчик дёргал /<owner>/<repo>/archive/<ref> для каждого коммита, Forgejo на каждый запрос пересобирал снапшот репозитория (20-30 МБ) и клал в кэш repo-archive. Штатная уборка идёт раз в сутки, генерация — около ста файлов в час. Кэш вырос до 55 ГБ при диске 145 ГБ и ел 2 ГБ/ч (замерено контрольным df за 120 с); до нуля свободного места оставалось ~12 часов. 73 из 78 обращений к архивам за шесть часов пришли с одного адреса. Отказ, а не rate limit: даже один запрос в минуту даёт 30 МБ/мин новых файлов при суточной уборке. На git clone/fetch и на CI не влияет — смарт- протокол ходит другими путями. Цена: анонимная кнопка «скачать архив» в вебе перестаёт работать. `caddy validate` — Valid configuration. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JY6iWDnGDthdvsMWgK1BMG
This commit is contained in:
parent
6da7de06a4
commit
42a9402d62
1 changed files with 22 additions and 0 deletions
|
|
@ -56,6 +56,28 @@ errors.gendsgn.ru {
|
||||||
git.gendsgn.ru {
|
git.gendsgn.ru {
|
||||||
encode zstd gzip
|
encode zstd gzip
|
||||||
|
|
||||||
|
# Генерация архивов закрыта — она съедала диск (16.09.2026).
|
||||||
|
#
|
||||||
|
# Forgejo на КАЖДЫЙ GET /<owner>/<repo>/archive/<ref>.{zip,tar.gz,bundle}
|
||||||
|
# собирает снапшот репозитория заново (20-30 МБ, несколько секунд CPU) и
|
||||||
|
# кладёт результат в кэш repo-archive. Штатная уборка archive_cleanup
|
||||||
|
# работает, но раз в сутки — а внешний обходчик (73 из 78 обращений за 6ч
|
||||||
|
# с одного адреса 216.73.216.17) дёргал архив для каждого коммита и держал
|
||||||
|
# генерацию на ~100 файлах в час. Кэш вырос до 55 ГБ при диске 145 ГБ и ел
|
||||||
|
# 2 ГБ/ч: до нуля оставалось ~12 часов.
|
||||||
|
#
|
||||||
|
# Ограничение скорости тут не лечит: даже один запрос в минуту — это
|
||||||
|
# 30 МБ/мин новых файлов при суточной уборке. Нужен именно отказ.
|
||||||
|
# На `git clone`, `git fetch` и работу CI это НЕ влияет: смарт-протокол
|
||||||
|
# ходит по /<owner>/<repo>/info/refs и /git-upload-pack, другие пути.
|
||||||
|
# Цена: анонимная кнопка «скачать архив» в вебе больше не работает —
|
||||||
|
# сознательный размен, вернуть можно снятием этих двух правил.
|
||||||
|
@repo_archive path_regexp repo_archive ^/[^/]+/[^/]+/archive/.+$
|
||||||
|
respond @repo_archive "Архивы отключены: используйте git clone" 403
|
||||||
|
|
||||||
|
@api_archive path_regexp api_archive ^/api/v1/repos/[^/]+/[^/]+/archive/.+$
|
||||||
|
respond @api_archive "Архивы отключены: используйте git clone" 403
|
||||||
|
|
||||||
reverse_proxy forgejo:3000
|
reverse_proxy forgejo:3000
|
||||||
|
|
||||||
log {
|
log {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue