Назад | Перейти на главную страницу

Let's Encrypt certbot не может завершить проверку из-за конфигурации сервера Nginx

Для приложения мне нужна следующая строка в моем location блок:

rewrite ".*" /server.php break;

Это приводит к тому, что certbot не может проверить домен. Чтобы установить сертификат SSL, я прокомментировал эту строку, и certbot работал нормально. Теперь проблема в том, что обновление автоматизировано и не удастся, если я раскомментирую строку.

Есть ли способ создать специальный location только для проверки Let's Encript? Если да, то?

Вот полный блок с прокомментированной проблемной строкой:

location / { 
    try_files $uri $uri/ =404; 
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    include fastcgi_params;
    fastcgi_param USE_INSTANCE 'd1';
    fastcgi_param SCRIPT_FILENAME $request_filename;
    #rewrite ".*" /server.php break; 
}

Если вам интересно, почему я не ограничиваю шаблон соответствия ~ \.php$, это потому, что конфиг принадлежит моему api.host.com конечная точка, которая будет получать только те запросы, которые необходимо направить в сценарий PHP.

Я создал отдельный location блок для certbot.

location /.well-known/acme-challenge/ {
    root /var/www;
    try_files $uri =404;
}

(Обратите внимание, что я использую один и тот же корень документа для каждого виртуального хоста, который находится за пределами обычного корня документа, поэтому certbot никогда ничего не записывает в фактические каталоги веб-сайтов.)