Подтвердить что ты не робот

Как отправить запрос очистки в лак

Я не вижу подобный вопрос, но извиняюсь, если я обманываю.

Мы используем кеш-лак в нашей системе, но хотим установить систему, в которой мы можем очистить отдельные страницы при их редактировании (довольно нормально). Мы пытались заставить его работать с использованием HTTP-заголовка. Итак, наш VCL настроен так:

acl purge {
      "localhost";
#### Our server IP #####
}

sub vcl_recv {
    if (req.request == "PURGE") {
            if (!client.ip ~ purge) {
                    error 405 "Not allowed.";
            }
            return (lookup);
    }
}

sub vcl_hit {
    if (req.request == "PURGE") {
            purge;
    }
 }

sub vcl_miss {
        if (req.request == "PURGE") {
                 purge;
        }
}

Однако я зациклен на том, как на самом деле ОТПРАВИТЬ запрос на удаление http. Мы используем PHP для веб-сайта, поэтому я попытался использовать:

header("PL: PURGE / HTTP/1.0");
header("Host: url to purge");

Но это, кажется, ничего не делает (и varnishlog, похоже, не показывает ничего очищения).

Я также экспериментировал с cURL, но, опять же, он, похоже, не работает. Я пропустил что-то действительно основное, или это базовый звук, означающий, что моя реализация прослушивается?

Большое спасибо,

4b9b3361

Ответ 1

Вам нужно сделать HTTP-запрос.

Неподтвержденный, но должен быть по строкам (если вы хотите использовать завиток, как вы упомянули):

$curl = curl_init("http://your.varnish.cache/url-to-purge");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_exec($curl);

Ответ 2

Вы также можете очистить с помощью командной строки. Используйте команду sudo varnishadm. Это откроет интерфейс командной строки Varnish. где вы можете ввести свою команду, чтобы очистить страницы в соответствии с вашими потребностями. Например, чтобы очистить домашнюю страницу, сделайте следующее:

[email protected]:/etc/varnish# sudo varnishadm
200        
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,3.5.0-28-generic,x86_64,-sfile,-smalloc,-hcritbit

Type 'help' for command list.
Type 'quit' to close CLI session.

varnish> ban.url ^/$
200  

Ответ 3

Быстрый, грязный и эффективный способ отправки запроса PURGE:

curl -v -k -X PURGE URL

Вы можете сделать немного script с этим утверждением следующим образом:

1) Откройте редактор, в примере VI

 vi varnish_purge_url.sh

2) Введите следующий текст:

#!/bin/sh

curl -v -k -X PURGE $1

(не забудьте оставить пустую строку между первой и последней строками).

3) Сохраните файл и выйдите из него. Затем установите соответствующие атрибуты для его выполнения из оболочки:

chmod 750 varnish_purge_url.sh

4) Вы хотите быть root при создании и использовании вышеуказанного script. Если вы используете Ubuntu, не стесняйтесь добавлять sudo перед командами, когда это требуется.

5) Использование прост:

./varnish_purge_url.sh URL

Где URL - URL для очистки.

Ответ 4

Возможно, я на новой версии, но что выше не работает для меня. Это произошло:

sub vcl_hit {
  if (req.request == "PURGE") {
    ban("req.url ~ "+req.url);
    error 200 "Purged.";
  }
}