certbot «server_names_hash_bucket_size» directive is duplicate

Заметил, что сертификат Let’s Encrypt автоматически не может обновиться, пустой запуск продления выдаёт ошибку:

certbot certonly --dry-run -d meet.netsphere.ru
nginx: [emerg] "server_names_hash_bucket_size" directive is duplicate in /etc/nginx/sites-enabled/domain.ru.conf:1
nginx restart failed

Команда тестирования конфигурации nginx ничего не обнаружила

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Сам параметр значится дважды, один раз закомментирован в главном конфигурационном файле, второй раз используется по назначению в файле сайта

find /etc/nginx -type f -name "*.conf" -exec grep --color -Hni "server_names_hash_bucket_size"  {} \;

/etc/nginx/sites-available/domain.ru.conf:1:server_names_hash_bucket_size 64;
/etc/nginx/nginx.conf:24:       # server_names_hash_bucket_size 64;

Данная проблема оказалась багом certbot ещё от 21 октября 2017 года https://github.com/certbot/certbot/issues/5199. certbot перед обновлением сертификата устанавливает своё значение данной опции и получается дублирование.

Варианта решения проблемы предлагается два: использовать server_names_hash_bucket_size единожды для всех сайтов в главном nginx.conf или использовать хуки certbot для того, чтобы убрать опцию до запуска обновления сертификата и восстановить после окончания операции.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Яндекс.Метрика