Практическое задание

Эта задача — шаг 20 курса «Основы nginx»

Кэшируй ответы бэкенда

сложно~20 мин

nginx проксирует запросы на бэкенд http://127.0.0.1:8800. Включи кэширование ответов бэкенда на стороне nginx и добавь заголовок X-Cache-Status, по которому видно попадание в кэш. Разные адреса (в том числе с разными параметрами запроса) кэшируются отдельно: первый запрос к новому адресу идёт на бэкенд (X-Cache-Status: MISS), а повторный обслуживается из кэша (HIT). Содержимое страницы должно остаться прежним.

Что потренируешь:
  • nginx
  • proxy_cache
  • proxy_cache_path
  • upstream_cache_status
  • кэширование

Разбор темы

Кэш проксирования хранит ответы апстрима на диске, а ключи и метаданные — в разделяемой памяти, поэтому объявление хранилища (proxy_cache_path) живёт в контексте http, а включение (proxy_cache) — в server/location. Что именно кэшировать и насколько, определяют proxy_cache_valid вместе с заголовками ответа: Cache-Control/Expires от бэкенда по умолчанию учитываются и могут запретить кэширование. Диагностическая переменная $upstream_cache_status показывает исход обращения (MISS, HIT, EXPIRED, BYPASS, STALE) — её принято отдавать заголовком, чтобы состояние кэша было видно клиенту и мониторингу.

Что проверяется

  1. ответы кэшируются: новый адрес — MISS, повторный запрос — HIT
  2. содержимое страницы не изменилось

Как это выглядит