TGViewer
ryzhov_dev ryzhov_dev @ryzhov_dev · 11 subscribers
Post #10 48
Nginx как reverse proxy — баги, которые вылезают только после деплоя

Nginx выглядит простым, пока не выкатишь в прод. Конфиг валидный, стейджинг зелёный, а потом начинается "почему вдруг 413", "почему SSE не стримит", "почему бэкенд видит не тот путь".

Самая простая грабля — слеш в proxy_pass. Один символ меняет всё:


location /api/ {
proxy_pass http://app/; # бэкенд видит /users
}

location /api/ {
proxy_pass http://app; # бэкенд видит /api/users
}


Оба конфига валидны. Только один совпадает с тем, что ждёт твоё приложение.

Остальные, на которые стоит смотреть первым делом:

- X-Forwarded-For и X-Forwarded-Proto — доверяй только тем, что проставил сам. То, что прислал клиент, — это пользовательский ввод, и на нём нельзя строить ни rate limiting, ни аудит.
- client_max_body_size против лимитов приложения — выигрывает меньший, а 413 прилетает от того, кто первый отказал.
- proxy_buffering on по умолчанию тихо ломает SSE и стриминг. Выключать надо точечно, на нужных location.
- Таймауты: proxy_read_timeout, proxy_send_timeout, keepalive_timeout, send_timeout — каждый рубит запрос на своей стадии. Половина дебага — понять, кто именно выстрелил.

Проблема не в том, что nginx сложный. Проблема в том, что дефолты разумные для статики и не всегда разумные для API.
  • 🔥 2
More from @ryzhov_dev
  1. Aug 21, 2026Мой райтап неожиданно залетел в топ-10 и Авито прислали свой мерч 🎉
  2. Jul 24, 2026На прошлых выходных принял участие в AvitoCTF и решил сделать райтап для задания МедоИИд �…
  3. Jun 1, 2026Rate limiting в Go — без магии, по делу Рейт-лимитер — штука, которую обычно добавляют в п…
  4. May 26, 2026Индексы в MariaDB, которая тянет и OLTP, и OLAP Писал недавно про одну базу под две нагруз…
  5. May 14, 2026Вчера у меня приняли финальный проект на курсе Go разработчика в Яндекс Практикуме 🥳 Тепе…
  6. May 5, 2026Вебхуки в Go — как тихо сломать себе безопасность Вебхуки выглядят как самая скучная часть…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →