Вариант 4: Удаленный кэш

Добрый день. Мне нужна помощь, я не могу получить ответ HIT/MISS в лаке. пожалуйста, помогите мне .. заранее спасибо .. Вот моя конфигурация default.vcl.

        backend default {
        .host = "00.00.00.00";
        .port = "80";
        }

        sub vcl_recv {
          if (req.http.host == "www.example.com") {
            unset req.http.cookie;
            unset req.http.Vary;
          }
          else
          {
            return (pass);
          }
        }

        sub vcl_backend_response {
         set beresp.do_gzip = true;
         unset beresp.http.Cache-Control;
         set beresp.ttl = 1h;
         set beresp.grace = 1w;
         }


        sub vcl_deliver {
        if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
         } else {
        set resp.http.X-Cache = "MISS";
         }
        }

person rkevx21    schedule 18.10.2016    source источник


Ответы (2)


Единственный бэкэнд, который вы объявляете, это 0.0.0.0, вы должны объявить правильный бэкэнд ip или dns.

Varnish — это обратный прокси, он не будет следовать заголовку:Host => IP http. Необходимо явно указать, куда пересылать запрос.

person Benjamin Baumann    schedule 18.10.2016
comment
да, у меня есть правильный IP-адрес, это просто фиктивный / образец IP-адреса, но все же я не могу получить ответ X-Cache HIT / MISS - person rkevx21; 18.10.2016
comment
серверная часть по умолчанию { .host = marketics.ph; .порт = 80; } И req.http.host == marketics.ph - person rkevx21; 18.10.2016
comment
Вы уверены, что запросы проходят через Varnish? когда я открыл marketics.ph, я увидел, что отвечает Apache, а не Varnish. - person Mostafa Hussein; 18.10.2016
comment
Можете ли вы опубликовать завиток или http-запрос, который вы используете для теста, и результат? - person Benjamin Baumann; 18.10.2016
comment
Я уже решил это, сэр. Но теперь у меня новая проблема, не могли бы вы взглянуть на это, пожалуйста. stackoverflow.com/questions/40144405 / - person rkevx21; 20.10.2016

Ваш серверный порт указывает на то, где Varnish должен слушать. Varnish должен прослушивать порт 80, а серверной частью по умолчанию должен быть порт, на котором сейчас работает Apache. В вашем VCL измените его на:

backend default {
        .host = "127.0.0.1";
        .port = "82";
        }

В вашем файле /etc/varnish/varnish.params порт должен быть установлен на 80.

VARNISH_LISTEN_PORT=80

и в вашем http.conf вы должны настроить Apache для прослушивания 82.

Listen 0.0.0.0:82

Перезапустите Apache, затем Varnish. Теперь вы будете правильно проксировать трафик обратно в Apache. IP-адреса, которые я дал, являются примерами, YMMV.

Правильный поток:

[Internet] <-> (80)[Varnish] <-> (82)[Apache].
person Ray    schedule 18.10.2016