лак configtest

лак configtest

Есть ли способ проверить синтаксис конфигурации Varnish, не используя новую версию?

Я ищу эквивалент натурального лакаapache2ctl configtest

решение1

Вы можете попросить Varnish скомпилировать ваш файл VLC во временный файл. Это часть нашего скрипта, который загружает новую конфигурацию на наши серверы Varnish:

tmpfile=$(mktemp)
trap 'rm -f $tmpfile' 0
varnishd -C -f /srv/web/fe/varnish/default.vcl > $tmpfile
echo

if [ ! -s $tmpfile ]; then
    echo "ERROR: There are errors in the varnish configuration." >&2
    exit 1
fi

Это работает, поскольку varnishd -Cне будет генерировать никаких выходных данных, stdoutесли в VCL есть ошибки.

решение2

Как насчет varnish_reload_vcl?

Некоторые примеры:

  1. Без проблем в вашем VCL-файле

    $ varnish_reload_vcl
    Loading vcl from /etc/varnish/default.vcl
    Current running config name is reload_2016-01-28T15:18:23
    Using new config name reload_2016-01-28T15:19:57
    VCL compiled.
    VCL 'reload_2016-01-28T15:19:57' now active
    available       0 boot
    available       0 reload_2016-01-28T14:40:04
    available       0 reload_2016-01-28T14:42:07
    available       0 reload_2016-01-28T14:42:32
    available       0 reload_2016-01-28T14:47:45
    available       0 reload_2016-01-28T14:48:45
    available       0 reload_2016-01-28T14:50:26
    available       0 reload_2016-01-28T14:55:55
    available       0 reload_2016-01-28T15:18:23
    active          0 reload_2016-01-28T15:19:57
    
    Done
    
  2. С ошибкой в ​​вашем файле VCL

    $ varnish_reload_vcl
    Loading vcl from /etc/varnish/default.vcl
    Current running config name is reload_2016-01-28T15:19:57
    Using new config name reload_2016-01-28T15:21:51
    Message from VCC-compiler:
    Symbol not found: 'b1' (expected type BACKEND):
    ('input' Line 77 Pos 32)
            set req.backend_hint = b1;
    -------------------------------##-
    
    Running VCC-compiler failed, exited with 2
    VCL compilation failed
    Command failed with error code 106
    varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 vcl.load failed
    

Связанный контент