Подтвердить что ты не робот

Как отобразить возраст кэшированного файла nginx в заголовках

Я установил кеширующий сервер для сайта с помощью nginx 1.6.3 на CentOS 7 и настроил его на добавление заголовков HTTP в обслуживаемые файлы, чтобы показать, были ли упомянутые файлы отправлены с кеширующего сервера (HIT, MISS или BYPASS ) так:

add_header X-Cached $upstream_cache_status;

Однако я хотел бы посмотреть, есть ли способ добавить заголовок для отображения возраста кэшированного файла, так как у моего решения есть proxy_cache_valid 200 60m; set, и я хотел бы проверить, соблюдает ли этот параметр.

Так что я ищу, было бы что-то вроде:

add_header Cache-Age $upstream_cache_age;

Я не могу найти что-нибудь подобное, не могли бы вы помочь?

Спасибо

4b9b3361

Ответ 1

Документация nginx достаточно полная - нет переменной с прямым относительным возрастом кэшированного файла.

Лучшим способом было бы использовать класс переменных $upstream_http_, чтобы получить абсолютный возраст ресурса, набрав его Date через $upsteam_http_date.

add_header X-Cache-Date $upstream_http_date;

Для семантического значения заголовка Date в HTTP/1.1 см. rfc7231#section-7.1.1.2, который описывает его как время генерации ответа HTTP, поэтому, в основном, это должно выполнить именно то, что вы хотите (особенно если бэкэнд работает с тем же timecounter).

Ответ 2

Я потратил некоторое время на то, чтобы решить эту проблему с помощью модуля Nginx Perl, который, похоже, не имеет доступа к $upstream_http_NAME, которые позволят вам успешно рассчитать текущее время из заголовка временной метки, созданного вашим прокси-сервером во время рендеринга.

В качестве альтернативы вы можете использовать другую архитектуру уровня кэширования, такую ​​как Varnish Cache, которая действительно предоставляет заголовок ответа HTTP Age:

http://book.varnish-software.com/3.0/HTTP.html#age