Я знаю, что nginx может действовать как обратный прокси-сервер для кеширования файлов, если он имеет бэкэнд.
Дело в том, что я уже использую nginx в качестве веб-сервера, обслуживающего файлы (статика и php), и хочу знать, может ли nginx действовать как proxy_cache со своими собственными файлами? Я знаю, что это не сработает, если я поставлю сам nginx в качестве апстрима.
Классический вариант: nginx => apache backend => cached_result
Что хочу: nginx => тот же экземпляр nginx => cached_result
Является ли это возможным ? И если да, то как?
Предполагая, что есть некоторая потребность в кешировании локальных файлов, я просто пошел и добавил следующую конфигурацию в ящик nginx, и, похоже, он отлично работает прямо из коробки:
proxy_cache_path /data/nginx/cache keys_zone=one:128m;
server {
listen 127.0.0.1:80;
server_name _;
root /usr/share/nginx/local;
location / {
autoindex on;
allow all;
satisfy any;
try_files $uri $uri/ =404;
}
}
server {
listen ipv4.addr:443 ssl http2;
listen [ipv6addr]:443 ssl http2;
server_name _;
root /usr/share/nginx/html;
include /etc/nginx/ssl.conf;
location /local/ {
allow all;
satisfy any;
proxy_cache one;
proxy_cache_key "$host$request_uri";
proxy_cache_min_uses 1;
proxy_cache_methods GET HEAD;
proxy_pass http://127.0.0.1:80/;
}
}
вы уверены, что вам нужен кеш для локальных файлов? причина кеширования:
Веб-кеш находится между клиентом и «исходным сервером» и сохраняет копии всего контента, который он видит. Если клиент запрашивает содержимое, которое хранится в кэше, он возвращает содержимое напрямую, не связываясь с исходным сервером. Это повышает производительность, поскольку веб-кеш находится ближе к клиенту, и более эффективно использует серверы приложений, поскольку им не нужно каждый раз создавать страницы с нуля.
Может ты сможешь использовать proxy_cache
пример директивы по той же ссылке, но я его не тестировал