Как найти расположение кэш-файлов Nginx на Linux
Используя Nginx в качестве обратного прокси, включение кэширования может значительно улучшить производительность, снизив нагрузку на сервер и ускорив время отклика. Однако бывают ситуации, когда вы не хотите очищать весь кэш, а хотите удалить только закэшированную копию конкретной страницы. В этом руководстве показано, как настроить кэширование в Nginx, генерировать кэш-файлы и находить их на диске, чтобы вы могли очищать отдельные элементы, не сбрасывая весь кэш.
В этом учебнике вы узнаете:
- Как настроить кэширование прокси Nginx
- Как найти и удалить определенные файлы кэша
ВЫ ЗНАЛИ?
Nginx называет каждую кэшированную страницу по MD5 хешу ключа кэша (по умолчанию, получаемому из исходного запроса). Вот почему вы можете безопасно удалить файл кэша одной страницы без очистки всего кэша.
Настройте и найдите файлы кеша Nginx
В этом руководстве мы установим необходимые пакеты, настроим кэширование Nginx, запустим простой сервер backend и затем продемонстрируем, как генерировать и находить кэшированные файлы. Основное применение заключается в том, чтобы позволить администраторам удалять или обновлять кэшированную страницу без очистки всей кэшированной директории.
-
Установите необходимые пакеты: Обновите вашу систему и установите Nginx, curl и Python3.
sudo apt update sudo apt install nginx curl python3 -
Настройка конфигурации кэша Nginx: Отредактируйте /etc/nginx/nginx.conf и задайте путь к кэшу.
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m;Затем настройте ваш серверный блок:
server { listen 80; location / { proxy_cache mycache; proxy_pass http://127.0.0.1:8080; proxy_cache_valid 200 10m; add_header X-Cache-Status $upstream_cache_status; } }Создайте директорию кэша и перезагрузите Nginx:
sudo mkdir -p /var/cache/nginx sudo chown www-data:www-data /var/cache/nginx sudo nginx -t sudo systemctl reload nginx -
Запустите сервер на стороне сервера: Запустите простой HTTP-сервер на Python, чтобы он работал как сервер.
cd /tmp echo "Hello from backend server" > index.html python3 -m http.server 8080 -
Создание и проверка кэша: Запросите страницу через Nginx и подтвердите кэширование.
curl http://localhost/ curl -I http://localhost/ | grep X-Cache-StatusПервый запрос ПРОПУСТИТ, но последующие запросы должны ПОПАДАТЬ в кэш.
ВАЖНО: ПОВЕДЕНИЕ КЕША И КЛЮЧА
По умолчанию Nginx вычисляет proxy_cache_key с использованием целевого сервера (например, запрос к http://localhost/, который передается на http://127.0.0.1:8080/, будет кэшироваться под ключом 127.0.0.1:8080). Поэтому удаление файла для хеша 127.0.0.1:8080 также влияет на ответы localhost. -
Найдите и удалите файл кэша для корневой страницы: Nginx использует хэш MD5 ключа кэша для генерации имен файлов кэша.
echo -n "http://127.0.0.1:8080/" | md5sum | awk '{print $1}' ee71830d485aca6abfca0ebb34561f72 find /var/cache/nginx -type f -name ee71830d485aca6abfca0ebb34561f72 rm -f /var/cache/nginx/2/f7/ee71830d485aca6abfca0ebb34561f72 curl -I http://localhost/ | grep X-Cache-Status # MISS curl -I http://localhost/ | grep X-Cache-Status # HIT -
Найдите и удалите файл кэша для index.html: То же самое правило применяется, если вы явно запрашиваете /index.html.
curl -I http://localhost/index.html | grep X-Cache-Status # MISS curl -I http://localhost/index.html | grep X-Cache-Status # HIT echo -n "http://127.0.0.1:8080/index.html" | md5sum | awk '{print $1}' 678f88e4e619da57ac27568d6c5c7120 find /var/cache/nginx -type f -name 678f88e4e619da57ac27568d6c5c7120 rm -f /var/cache/nginx/0/12/678f88e4e619da57ac27568d6c5c7120 curl -I http://localhost/index.html | grep X-Cache-Status # MISS curl -I http://localhost/index.html | grep X-Cache-Status # HITЗдесь вы можете увидеть, что / и /index.html кэшируются отдельно, каждая с уникальным хешем и файлом на диске.
Это гарантирует, что в вашей системе есть необходимые компоненты для настройки кэширования и тестирования с бэкенд-службой.
Это предоставляет содержимое, которое Nginx может кешировать.
Файл восстанавливается после первого пропуска, что доказывает, что вы удалили только кэш одной страницы.
Заключение
Следуя этому пособию, вы узнали, как включить кэширование прокси-сервера Nginx, генерировать записи кэша и находить точный файл кэша, хранящийся на диске. Вы также увидели практические примеры как для корневого пути, так и для /index.html. Это особенно полезно, когда вам нужно очистить или обновить кэш для одной конкретной страницы, сохраняя при этом остальной кэшированный контент.



Добавить комментарий