Есть ли способ проверить синтаксис конфигурации 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
?
Некоторые примеры:
Без проблем в вашем 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
С ошибкой в вашем файле 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