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>
1.4 KiB
1.4 KiB
date, topic, areas, tags
| date | topic | areas | tags | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-03-15 | APISIX git push 500 에러 + http-logger 401 에러 해결 |
|
|
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 로그 연동