Я думаю, я нашел проблему. У меня было так:
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d example.com -d www.example.com --keylength"
А должно было быть так:
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d example.com --keylength"
Обратите внимание на последнюю строку: у меня были указаны и example.com, и www.example.com.
Также я заменил return 301 https://$host$request_uri; на return 301 $scheme://$host$request_uri;. После пересборки всё, кажется, работает.
Теперь меня беспокоит лишь то, что упомянул @Stephen: это может сломаться, если конфигурация letsencrypt изменится.