# конспект · шаг 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из таких подборок сегодня и вовсе мёртв. - Считать, что задача одна. Требования заказчика противоречат друг другу (кеш против персонализации, строгий лимит против удобства) - свести их и есть работа.
Комментарии
Пока нет комментариев. Будь первым!
Оставить комментарий