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

Очистить кеш nginx через HTTP-запрос?

У меня обычный

    proxy_cache_path        /data/nginx/cache levels=1:2 keys_zone=drupal:16m;
    proxy_cache_key         "$scheme$host$request_uri";

установить кеширование прокси. Как мне настроить nginx, чтобы разрешить удаление определенного элемента из кеша с помощью HTTP-запроса?

Если вы пытаетесь выполнить выборочную очистку страниц на Drupal то я бы порекомендовал вам прочитать эту статью, так как она немного длинная.

Подведем итог основным этапам:

  1. Убедитесь, что на вашем сервере Nginx установлен модуль ngx_cache_purge.
  2. Также установите модуль php-curl (php5-curl для Debian / Ubuntu), который должен быть установлен на вашем сервере.
  3. Определите свой кеш для использования через путь кэша fastcgi
  4. Измените расположение сервера, который обрабатывает наши запросы Drupal, с помощью следующего кода:

    location = /index.php {
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /var/www/$host/drupal/index.php;
        fastcgi_hide_header X-Drupal-Cache; #optional
        fastcgi_hide_header Etag; #optional
        fastcgi_pass php;
    
        # Cache Settings
        set $nocache "";
        if ($http_cookie ~ SESS) { #logged in users should bypass the cache
          set $nocache "Y";
        }
        if ($request_uri ~ \? ) { # Purge doesn't handle query strings yet
          set $nocache "Y";
        }
        fastcgi_cache mycache;
        fastcgi_cache_key $host$request_uri;
        fastcgi_cache_valid 200 301 1d;
        fastcgi_ignore_headers Cache-Control Expires;
        fastcgi_cache_bypass $nocache;
        fastcgi_no_cache $nocache;
        add_header X-nginx-Cache $upstream_cache_status; #optional
        expires epoch;
    }
    
  5. Создайте новый сервер, прослушивающий случайный порт на интерфейсе localhost.

  6. Включите модули Purge и Expire и установите URL-адрес прокси в admin / settings / purge на "http://127.0.0.1:8888".

и вы сделали !!

Источник статьи: кеширование nginx с выборочной очисткой страниц