왜
nginx 에는 두 개의 레이트리밋 zone 이 있다.
| zone |
한도 |
걸리는 경로 |
piki_general |
IP별 초당 20 (burst 40) |
/api/ 전체, /admin, /docs/ 등 |
piki_llm |
IP별 분당 30 (burst 20) |
/wishlists, /wishlists/images, /tournaments/*/items/(link|images) |
#339 로 계정별 아이템 등록 한도가 들어가면서 piki_llm 이 잉여가 됐다.
즉 piki_llm 은 실질적으로 아무것도 막지 않으면서 nginx conf 의 복잡도만 차지한다. 경로 정규식 3개와 zone 정의, trailing slash 우회 방지 주석까지 딸려 있다.
배수가 180 에서 60 으로 줄었지만 결론은 그대로다. 60배 느슨한 층은 여전히 아무것도 막지 못한다.
무엇을
piki_llm zone 정의와 그것을 참조하는 location 3개를 제거한다. 대상 파일은 두 개다.
core/infra/nginx/api.piki.day.conf
core/infra/nginx/dev.api.piki.day.conf
제거 후 해당 경로들은 location /api/ 의 piki_general 을 그대로 상속한다.
piki_general 은 유지한다
두 zone 의 성격이 다르다.
| zone |
답하는 질문 |
앱이 대체 가능한가 |
piki_general |
이 IP 가 서버를 죽이려 하나? |
불가. 미인증 스캔·잘못된 경로·정적 자원까지 다 걸러야 하고, 인증 필터 이전에 끊어야 앱 스레드를 안 쓴다 |
piki_llm |
이 IP 가 비싼 경로를 연타하나? |
가능. 계정별 한도가 같은 질문에 훨씬 정확하게 답한다 |
주의: zone 키 변경은 reload 로 안 먹는다
limit_req_zone 의 키를 바꾸는 변경은 nginx -t 를 통과하고도 런타임에서만 emerg 로 죽는다(dev 502 사고, 2026-08-11). 이번 작업은 zone 을 제거하는 것이라 그 함정과 직접 겹치지는 않지만, piki_llm 을 참조하는 location 을 하나라도 남긴 채 zone 정의만 지우면 같은 방식으로 터진다. 정의와 참조를 함께 지웠는지 확인한다.
선행 조건
바로 지우지 않는다. 계정별 한도가 실제로 동작하는지 확인한 뒤 제거한다.
- 계정별 429 가 실제로 발생하는지 (메트릭·로그)
- 정상 사용자가 부당하게 막히지 않는지
- Redis 장애 시 fail-open 이 의도대로 도는지
지금 지우면 계정별 한도에 버그가 있을 때 그 경로의 방어가 통째로 사라진다.
배포 상태: #339 는 2026-08-13 에 prod 로 promote 됐다(#904 포함). 즉 배포는 끝났고 위 확인만 남았다. 단 #927 이 계정 한도 값을 위시 10 · 토너먼트 30 에서 통합 30 으로 바꾸므로, 확인은 #927 배포 이후 기준으로 하는 편이 낫다.
참고
왜
nginx 에는 두 개의 레이트리밋 zone 이 있다.
piki_general/api/전체,/admin,/docs/등piki_llm/wishlists,/wishlists/images,/tournaments/*/items/(link|images)#339 로 계정별 아이템 등록 한도가 들어가면서
piki_llm이 잉여가 됐다.piki_llm은 IP별 분당 30, 즉 시간당 1,800 이다즉
piki_llm은 실질적으로 아무것도 막지 않으면서 nginx conf 의 복잡도만 차지한다. 경로 정규식 3개와 zone 정의, trailing slash 우회 방지 주석까지 딸려 있다.배수가 180 에서 60 으로 줄었지만 결론은 그대로다. 60배 느슨한 층은 여전히 아무것도 막지 못한다.
무엇을
piki_llmzone 정의와 그것을 참조하는 location 3개를 제거한다. 대상 파일은 두 개다.core/infra/nginx/api.piki.day.confcore/infra/nginx/dev.api.piki.day.conf제거 후 해당 경로들은
location /api/의piki_general을 그대로 상속한다.piki_general은 유지한다두 zone 의 성격이 다르다.
piki_generalpiki_llm주의: zone 키 변경은 reload 로 안 먹는다
limit_req_zone의 키를 바꾸는 변경은nginx -t를 통과하고도 런타임에서만 emerg 로 죽는다(dev 502 사고, 2026-08-11). 이번 작업은 zone 을 제거하는 것이라 그 함정과 직접 겹치지는 않지만,piki_llm을 참조하는 location 을 하나라도 남긴 채 zone 정의만 지우면 같은 방식으로 터진다. 정의와 참조를 함께 지웠는지 확인한다.선행 조건
바로 지우지 않는다. 계정별 한도가 실제로 동작하는지 확인한 뒤 제거한다.
지금 지우면 계정별 한도에 버그가 있을 때 그 경로의 방어가 통째로 사라진다.
배포 상태: #339 는 2026-08-13 에 prod 로 promote 됐다(#904 포함). 즉 배포는 끝났고 위 확인만 남았다. 단 #927 이 계정 한도 값을 위시 10 · 토너먼트 30 에서 통합 30 으로 바꾸므로, 확인은 #927 배포 이후 기준으로 하는 편이 낫다.
참고
piki_general과는 축이 달라 무관)