Назад | Перейти на главную страницу

кеш nginx без апстрима / бэкэнда

Я знаю, что 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/;
  }
}

вы уверены, что вам нужен кеш для локальных файлов? причина кеширования:

Веб-кеш находится между клиентом и «исходным сервером» и сохраняет копии всего контента, который он видит. Если клиент запрашивает содержимое, которое хранится в кэше, он возвращает содержимое напрямую, не связываясь с исходным сервером. Это повышает производительность, поскольку веб-кеш находится ближе к клиенту, и более эффективно использует серверы приложений, поскольку им не нужно каждый раз создавать страницы с нуля.

Из Документ Nginx

Может ты сможешь использовать proxy_cache пример директивы по той же ссылке, но я его не тестировал