Дано: домен с тремя сабдоменами, vps ubuntu 20.04, nginx на 8080 через Varnish на 80 порту.
На этих 3 сабдоменах по сайту на Magento 2.
Сначала были установлены сертификаты от letsencrypt (стандарно, certbot с последующим certbot renew --dry-run), потом уже инсталлированны варниш и магенто инстансы, и настроены конфиги nginx под них.
вот пример nginx конфига одного из виртуальных хостов.
spoilerserver {
listen 8080;
server_name magento.site.com;
set $MAGE_ROOT /var/www/magento;
set $MAGE_DEBUG_SHOW_ARGS 0;
set $MAGE_MODE default;
include /var/www/magento/nginx.conf.sample;
}
server {
server_name magento.site.com;
listen [::]:443 ssl http2; # managed by Certbot
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/magento.site.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/magento.site.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
location / {
proxy_pass http://127.0.0.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
}
}
Все работает корректно, до того момента, пока certbot не пытается обновить сертификаты. Утром одного дня получаю 3 просроченных сертификата, вручную - с настроенными конфигами - не срабатывает -
Challenge failed for domain magento.site.com
В принципе, изменив один конфиг nginx на дефолный, отключив варниш и переведя nginx на 80 порт, все обновилось, делов на 5 минут, но все же... Как то можно в такой конфигурации заставить certbot обновлять сертификаты автоматом? Видел что в конфиг варниш предлагается добавить
spoilerbackend certbot {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
if (req.url ~ "^/\.well-known/acme-challenge/") {
set req.backend_hint = certbot;
return(pipe);
}
}
sub vcl_pipe {
if (req.backend_hint == certbot) {
set req.http.Connection = "close";
return(pipe);
}
}
но это не помогло.