Лак vcl_fetch не работает

Я плохо знаком с конфигурированием лака. Я пытаюсь копировать установку лака, которую я сделал на AWS на другой сервер. Вот сценарий:

У меня есть 2 сервера, служащие веб-контенту (Web1 и Web2), который является симметричной парой загрузки. У нас есть выполнение Web1 и настроенный правильно, и прямо сейчас у меня просто есть Web2, указывающий на Web1 через Лак.

Вот содержание/etc/sysconfig/varnish:

NFILES=131072
MEMLOCK=82000
RELOAD_VCL=1
DAEMON_OPTS="-a :80 \
     -T localhost:6082 \
     -f /etc/varnish/default.vcl \
     -u varnish -g varnish \
     -S /etc/varnish/secret \
     -s file,/var/lib/varnish/varnish_storage.bin,1G"

И вот содержание моего/etc/varnish/default.vcl (обратите внимание, что я заменил IP-адресом хоста здесь). У меня в настоящее время есть пустой VCL, и этот работает:

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

sub vcl_recv {
}

Теперь, если я начинаю добавлять установку "льготного периода" внутри vcl_recv как так, лак отказывается запускаться:

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

sub vcl_recv {
    set req.grace = 24h;
}

Если я пытаюсь добавить vcl_fetch, он утончается, отказывается работать также:

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

sub vcl_recv {
}

sub vcl_fetch {
}

Я не уверен, что я пропускаю. Это могло бы быть что-то очевидное, но у меня нет достаточного опыта с этим все же для понимания этого.

У меня есть что-то более сложная работа над нашим сервером AWS, что-то вроде этого вида, и это работает:

sub vcl_recv {
    set req.grace = 24h;

    if (!req.backend.healthy) {
        unset req.http.Cookie;
    }

    if (req.url ~ "(?i)\.(svg|png|gif|jpeg|jpg|ico|swf|css|js|html|htm)(\?[a-z0-9]+)?$") {
        unset req.http.Cookie;
    }
    set req.http.Cache-Control = "public; max-age=31557600";

    if (req.http.Accept-Encoding) {
        if (req.http.Accept-Encoding ~ "gzip") {
            set req.http.Accept-Encoding = "gzip";
        }
        else if (req.http.Accept-Encoding ~ "deflate") {
            set req.http.Accept-Encoding = "deflate";
        }
        else {
            unset req.http.Accept-Encoding;
        }
    }
}
sub vcl_fetch {
    set beresp.grace = 24h;
    unset beresp.http.pragma;
    set beresp.http.Max-Age = 31557600;
    set beresp.http.Cache-Control = "public, max-age=31557600";
    unset beresp.http.Set-Cookie;
}
sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
    }
    else {
        set resp.http.X-Cache = "MISS";
    }
}

Таким образом, я не понимаю, почему та же конфигурация не будет работать над этим другим сервером.

Обновление:

Делая предложение Carlos Abalde выполнения в режиме отладки, я теперь вижу следующую ошибку:

Message from VCC-compiler:
VCL sub's named 'vcl*' are reserved names.
('input' Line 28 Pos 5)
sub vcl_fetch {
----#########--

Valid vcl_* methods are:
        none
        vcl_recv
        vcl_pipe
        vcl_pass
        vcl_hash
        vcl_purge
        vcl_miss
        vcl_hit
        vcl_deliver
        vcl_synth
        vcl_backend_fetch
        vcl_backend_response
        vcl_backend_error
        vcl_init
        vcl_fini
Running VCC-compiler failed, exited with 2

VCL compilation failed

Я не понимаю, как vcl_fetch не распознан. Вот моя информация о версии Лака:

varnishd (varnish-4.0.2 revision bfe7cd1)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2014 Varnish Software AS
1
задан 15 February 2015 в 12:04
2 ответа

Я немного покопался, и информация о версии дала мне некоторые подсказки. Я обнаружил похожую проблему здесь:

https://stackoverflow.com/questions/23284764/varnish-wont-recognize-req-grace-variable

В основном я использую конфигурацию Varnish версии 3 на Varnish 4 установка. Похоже, мне придется переписать свой VCL.

0
ответ дан 4 December 2019 в 08:07

Если Varnish не запускается, вы можете попробовать запустить его вручную на переднем плане, а затем проверить наличие ошибок в stdout: sudo varnishd -F -f / path / to / your. vcl .

0
ответ дан 4 December 2019 в 08:07

Теги

Похожие вопросы