Skip to content

fix(nginx): LOGLEVEL=notice — opóźnienia bpp_ip_slow trafiają do logu - #39

Merged
mpasternak merged 1 commit into
mainfrom
fix/nginx-loglevel-notice
Oct 22, 2026
Merged

mpasternak merged 1 commit into
mainfrom
fix/nginx-loglevel-notice

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Problem

Zadanie CI Testy runtime padało (także na main): make test-nginx-limits → brak linii 'delaying request ... bpp_ip_slow' w logu.

Przyczyna nie leży w teście. Obraz owasp/modsecurity-crs:nginx (tag pływający, build 2026-10-18) ma error_log ${ERRORLOG} ${LOGLEVEL} z LOGLEVEL=warn, a nginx loguje opóźnienia limit_req o poziom niżej niż odmowy, czyli przy limit_req_log_level warn na notice. Na produkcji make rate-limit-stats pokazywał przez to „spowolnieni: 0”, mimo że nginx spowalniał klientów.

Zmiany

  • webserver: LOGLEVEL: "${LOGLEVEL:-notice}". W Alloy notice → info, więc linie nie trafiają na dashboard błędów. Odrzuciłem limit_req_log_level error, bo odmowy 429 wpadłyby wtedy do błędów.
  • scripts/test-nginx-limits.sh: ten sam LOGLEVEL oraz LC_ALL=C przy porównaniu czasów (przy pl_PL awk źle liczył opóźnienia).
  • test_nginx_global_limits_wired: statyczna asercja LOGLEVEL w compose, bo test runtime ustawia go sam. Sprawdzona mutacją warn → FAIL.
  • Dokumentacja: docs/architektura/rate-limiting.md, CLAUDE.md.

Testy

  • make test-nginx-limits (lokalnie, świeży obraz): przed zmianą 2 niezgodności, po zmianie „wszystko zgodne”.
  • tests/test_makefile.sh </dev/null: 404 passed, 0 failed, 1 skipped.
  • mkdocs build --strict: OK.

Wdrożenie: zmiana w environment:, więc wymaga make up (sam git pull nie wystarczy).

🤖 Generated with Claude Code

Obraz owasp/modsecurity-crs:nginx ma error_log na ${LOGLEVEL}=warn, a nginx
loguje OPOZNIENIA limit_req o poziom nizej niz odmowy (notice przy
limit_req_log_level warn). Linie "delaying request ... bpp_ip_slow" ginely:
make rate-limit-stats pokazywal "spowolnieni: 0" mimo spowalniania, a
make test-nginx-limits padal w CI (tez na main) po pullu nowszego obrazu.

- webserver: LOGLEVEL=notice (notice -> Alloy mapuje na info, nie error),
- test-nginx-limits: ten sam LOGLEVEL + LC_ALL=C przy porownaniu czasow
  (pl_PL z przecinkiem dziesietnym liczyl opoznienia zle),
- test_nginx_global_limits_wired: asercja LOGLEVEL w compose (sprawdzona
  mutacja warn -> FAIL), bo test runtime ustawia go sam.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mpasternak
mpasternak merged commit 570c5a5 into main Oct 22, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant