obsidian: 정본 문서에서 히스토리/인시던트 분리 완료

15개 정본 문서에서 날짜별 변경이력, 인시던트 기록, 폐기된 구현 상세를
history/ 디렉토리로 분리. 정본은 현재 상태만 기술하는 백서 형태로 정리.
각 정본에 history 위키링크 추가.

분리된 history 파일 12건:
- apisix git push 500, k3s postgresql migration, apisix→traefik 전환
- netbis DDoS 공격, gitea 이전/분리, usb 2.5g hang + NFS hard mount
- supabase→patroni, apisix etcd 통합/분리, anomaly-detect 재설계
- patroni failover incident, zlambda nixos migration, ops-agents setup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
kappa
2026-04-10 12:09:21 +09:00
parent 72750cfc9d
commit 2356b86d36
27 changed files with 554 additions and 514 deletions

View File

@@ -0,0 +1,36 @@
---
date: 2026-03-15
topic: APISIX git push 500 에러 + http-logger 401 에러 해결
areas:
- infra/apisix.md
- services/gitea.md
tags: [history, incident, apisix, gitea, safeline, crowdsec]
---
## git push 500 에러
### 증상
`gitea.inouter.com`으로 git push 시 BunnyCDN에서 403 반환 (오리진 500)
### 원인 1 — client_body_temp 퍼미션
nginx가 큰 POST body(git pack ~20KB)를 `/usr/local/apisix/client_body_temp/`에 쓸 때 퍼미션 거부. 디렉토리 소유자 `nobody` vs APISIX `apisix` 사용자.
수정: `chown apisix:apisix /usr/local/apisix/client_body_temp`
### 원인 2 — chaitin-waf 글로벌 적용
`chaitin-waf`가 global_rules에 있어서 git pack 바이너리를 SafeLine detector가 파싱 실패 → `mode: block`이면 500 반환.
수정: global_rules에서 `chaitin-waf` 제거, 각 라우트에 개별 적용. gitea 라우트는 git 경로 WAF 제외.
### 교훈
- SafeLine WAF는 바이너리 프로토콜을 처리할 수 없음 → 해당 경로 WAF 제외 필요
- global_rules WAF는 예외 처리가 어려움 → 라우트별 개별 적용이 유연함
## http-logger 401 에러
서울 APISIX http-logger가 CrowdSec으로 로그 전송 시 401. `headers.Authorization``auth_header` 필드로 수정.
## 참조
- `infra/apisix.md` — 현재 APISIX 설정
- `infra/crowdsec-safeline.md` — CrowdSec 로그 연동