1. 1
  2. 2
  3. 3
  4. 4
  5. 5

# конспект · шаг 5 из 5

Конспект: порядок сборки конфига

выжимка - её можно унести в заметки

Финальный проект: конфиг магазина, в котором сходятся все шестнадцать разделов.

Порядок сборки

1. каркас        два server: 80 (редирект + ACME) и 443 (всё остальное)
2. TLS           сертификат, ssl_reject_handshake на чужой SNI
3. канонизация   www → без www отдельным server или return
4. статика       SPA: try_files → /index.html; ассеты отдельным location
5. кеш-заголовки оболочка no-store, ассеты immutable, 404 на отсутствующий ассет
6. сжатие        gzip_types + gzip_vary
7. заголовки     nosniff и остальное - помня про наследование
8. прокси        группа app, заголовки о клиенте, WebSocket через map
9. кеш ответов   зона каталога + bypass/no_cache
10. лимиты       limit_req на /api/login с 429
11. служебное    /admin/ по адресу, точечные файлы, /healthz без лога

Требования, где чаще всего ошибаются

Требование Подвох
ACME при редиректе на https блок челленджа должен идти до return 301
несуществующий ассет = 404 без отдельного location SPA вернёт index.html с кодом 200
nosniff везде один add_header ниже отменяет унаследованные; SPA-фолбэк уводит запрос в location = /index.html, и там их тоже нет
вечный кеш ассетов с always заголовок уезжает и на 404 - «файла нет» запомнится на год
типы файлов без include mime.types JS отдаётся как text/plain, и при nosniff браузер отказывается его выполнять
WebSocket Connection через map, иначе ломаются обычные запросы
кеш каталога без bypass/no_cache уедет чужая персональная выдача
лимит на вход по умолчанию 503; нужен limit_req_status 429

Как проверять

Кнопка «Проверить» гоняет двадцать пять запросов и показывает трассу по каждому: какой server, какой location и какая директива приняли решение. Это быстрее, чем перечитывать конфиг глазами.

Ловушки джокера

  • Собрать всё и проверить в конце. Проверяй после каждого блока - ошибка найдётся там, где сделана.
  • Копировать «безопасный конфиг» из статьи целиком. Половина строк там про чужую задачу, а ssl_stapling из таких подборок сегодня и вовсе мёртв.
  • Считать, что задача одна. Требования заказчика противоречат друг другу (кеш против персонализации, строгий лимит против удобства) - свести их и есть работа.

Комментарии

Пока нет комментариев. Будь первым!

Оставить комментарий

Комментарий появится после проверки. Email не публикуется. Войти, чтобы не вводить имя каждый раз.