Я использую списки ACL Varnish для блокировки нежелательных клиентов по IP, и по мере роста списка блокировки / ACL время компиляции VCL сильно увеличилось. На днях я добавил еще 25K IP-адресов для блокировки, и Varnish больше не загружает VCL, а вместо этого отвечает:
«Ошибка команды с кодом ошибки 400» «Ошибка связи CLI (hdr)».
Кто-нибудь знает, как использовать Varnish для блокировки множества IP-адресов?
Я не хочу использовать iptables, так как хочу ответить 403 error
страница.
Списки управления доступом в черный список сейчас содержат около 190 тыс. Записей, большинство из которых являются одиночными IP-адресами (т.е. / 32, а не диапазонами).
/usr/bin/varnishadm -S /etc/varnish/secret -T localhost:6081 vcl.load file_default.vcl_time_1542634958 /etc/varnish/default.vcl
Command failed with error code 400
CLI communication error (hdr)
real 33m20.101s
user 0m0.004s
sys 0m0.000s
Код и этап компиляции, похоже, работают, поскольку компиляция без загрузки не вызывает ошибки.
/usr/sbin/varnishd -C -f /etc/varnish/default.vcl
real 34m50.554s
user 34m33.124s
sys 0m15.332s
Увеличение cli_buffer
(размер буфера для ввода команды CLI; по умолчанию 8 КБ) и / или cli_limit
(максимальный размер ответа CLI; по умолчанию 128 КБ) параметры, вероятно, решат эту проблему.