Кэширование в Nginx — это процесс сохранения ответов от сервера (например, HTML-страниц, изображений, CSS и JavaScript файлов) для последующего быстрого доступа к ним. Это позволяет значительно снизить нагрузку на сервер и ускорить время отклика для пользователей. Nginx поддерживает кэширование как статических, так и динамических ресурсов.
Эта директива определяет путь к каталогу, где будут храниться кэшированные данные, а также параметры кэширования.
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name example.com;
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Cache-Status $upstream_cache_status;
}
}
}
Эта директива указывает, какой кэш использовать для конкретного location.
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Cache-Status $upstream_cache_status;
}
my_cache
.X-Cache-Status
в ответ, который показывает статус кэша (HIT, MISS, BYPASS и т.д.).Для статических файлов (например, изображений, CSS, JavaScript) можно использовать директиву expires
, чтобы указать, как долго браузер должен кэшировать эти файлы.
location ```* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
Cache-Control
, который указывает браузеру, что файлы могут кэшироваться публично и не должны быть преобразованы (например, сжаты).http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name example.com;
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Cache-Status $upstream_cache_status;
}
location ```* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
}
Кэширование в Nginx — это мощный инструмент для повышения производительности и снижения нагрузки на сервер. Оно может быть настроено как для статических, так и для динамических ресурсов. Основные директивы для настройки кэширования включают proxy_cache_path
, proxy_cache
, proxy_cache_valid
и expires
. Правильная настройка кэширования позволяет значительно ускорить время отклика и снизить нагрузку на backend-сервер, но требует внимательного подхода, чтобы избежать проблем с устаревшими данными.