Вопрос или проблема
Я хотел бы увидеть, какие объекты кэшируются моим обратным прокси nginx (с apache в качестве бэкенда). Пока я не нашел способа, только информацию о том, что это еще не реализовано.
Причина в том, что я хотел бы настроить свою конфигурацию для достижения наилучшей производительности, не нагружая сервер слишком сильно, так как бэкенд является производственной системой. Я знаю, что бенчмаркинг был бы лучше, но сейчас это не вариант. Поэтому я подумал, что альтернативной мерой было бы мониторить кэш.
Это возможно, и если да, то как? (несмотря на патч, упомянутый в приведенной выше ссылке)
Nginx сохраняет кэшированные файлы в папке Proxy_cache_path. Файлы имеют имена, основанные на md5-выходе прокси-URL.
Обратите внимание, что nginx сохраняет заголовок прокси в кэшированном файле. Так что может быть трудно проверять изображения.
Ави
- Nginx сохраняет кэшированные файлы в папке proxy_cache_path.
- Файлы называются по md5-выходу proxy_cache_key (а не по md5-выходу прокси-URL).
Вы можете легко проверить это самостоятельно: просто откройте один из файлов в вашей папке proxy_cache_path и выполните md5sum по ключу:
$ cat /var/cache/nginx/d/be/54a355887f2e4391a6e0cb9150ae3bed
[...]
KEY: https://test/style.css
HTTP/1.0 200 OK
Strict-Transport-Security: max-age=31536000; includeSubDomains
[...]
$ echo -n https://test/style.css | md5sum
54a355887f2e4391a6e0cb9150ae3bed -
Возможно, это немного связано. Чтобы увидеть, сколько записей находится в зоне кэша, проверьте, сколько записей сохранено в кэш-пути (/tmp/nginx_cache
в моем примере).
nginx@nginx-5d468f984d-trj8s:/tmp/nginx_cache$ find . -type f | wc -l
18719
Это показывает 18719 записей, сохраненных в зоне (верхняя граница, так как некоторые могут быть устаревшими или старыми).
Путь к зоне кэша определяется директивой, конфигурирующей кэш. Смотрите, например, руководство по кэшированию nginx.
Nginx упрощает реализацию функциональности утилиты командной строки, такой как htcacheclean
от apache, так как он сохраняет заголовки и тело вместе. Так, например,
rg -a 'KEY:' /var/cache/nginx |less
Ответ или решение
Как мониторить кэш прокси-сервера Nginx: Полное руководство
Мониторинг кэша Nginx в режиме обратного прокси позволяет оптимизировать настройки для достижения наилучшей производительности, особенно когда у вас есть бэкенд-система, работающая в продакшен-режиме, такая как Apache. В этом руководстве мы рассмотрим, как реализовать мониторинг кэша без необходимости в тестировании производительности и с минимальной нагрузкой на сервер.
1. Хранение кешируемых объектов
Nginx хранит закешированные файлы в директории, указанной в директиве proxy_cache_path
. Файлы именуются на основании MD5-хешей, полученных от ключа кэширования. Это значит, что для доступа к закешированным объектам вам нужно будет использовать хеши, а не сами URL. Например, если вы хотите проверить, какие объекты были закешированы, вам стоит заглянуть в директорию, указанную для кэша.
2. Проверка содержимого кэша
Вы можете получить доступ к закешированным файлам напрямую и проверить их содержимое, выполнив следующие команды:
# Измените путь на тот, который вы определили в конфигурации Nginx
$ cd /var/cache/nginx
$ ls -la
Для проверки ключа кэша вы можете использовать команду md5sum
. Вот как вы можете это сделать:
$ cat /var/cache/nginx/d/be/54a355887f2e4391a6e0cb9150ae3bed
KEY: https://test/style.css
Затем запустите команду для получения MD5-хеша:
$ echo -n https://test/style.css | md5sum
Это позволит вам проверить соответствие между URL и закешированным объектом.
3. Подсчет количества закешированных объектов
Чтобы узнать, сколько объектов находится в кэше, существует простая команда, которая подсчитает все файлы в директории кэша. Например:
$ find /var/cache/nginx -type f | wc -l
Эта команда вернёт общее количество файлов, хранящихся в кэше. Это число может варьироваться, так как некоторые записи могут устареть или быть удалены.
4. Мониторинг через консольный инструмент
Для получения информации о закешированных объектах, вы можете использовать инструмент rg
, который будет лезть по всем файлам в директории кэша и искать строки с ключами:
$ rg -a 'KEY:' /var/cache/nginx | less
Эта команда позволит вам просмотреть все ключи, которые были сохранены в кэше, и будет удобен для мониторинга.
5. Настройка кэширования
Чтобы оптимизировать кэширование, прежде всего убедитесь, что ваши настройки соответствуют особенностям вашего приложения. Например:
- Определите, какие типы контента требуют кэширования.
- Настройте заголовки кэширования.
- Оптимизируйте время жизни кэша для статического и динамического контента.
Заключение
Мониторинг кэша Nginx может быть выполнен с помощью простых команд и анализа содержимого директории, где сохраняются закешированные объекты. Эти методы позволят вам не только понять, какие объекты закешированы, но и помогут отследить их количество. Хотя полноценный бенчмаркинг дает более точные результаты, это решение подойдет для ваших нужд без значительного воздействия на производительность серверов. Правильная настройка и мониторинг кэша сделают вашу систему более эффективной и целенаправленной.
Следите за обновлениями вашей конфигурации и корректируйте её при необходимости, чтобы поддерживать оптимальную работу вашего веб-сервиса!