Перенаправление ssl Nginx и certbot

#nginx-config #certbot

#nginx-config #certbot

Вопрос:

У меня есть тестовый сервер с docker compose nginx certbot (получите сертификаты из let’s encript).

Конфигурация Nginx:

 server {
    listen [::]:80;
    listen 80;

    server_name testdomain.com www.testdomain.com;

    location ~ /.well-known/acme-challenge {
        allow all; 
        root /var/www/certbot;
    }
     
    server_tokens off;

    # redirect http to https www
    return 301 https://www.testdomain.com$request_uri;
} 

#other server configs
 

certbot сообщает в журналах:

 Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
  Domain: testdomain.com
  Type:   connection
  Detail: Fetching http://testdomain.com/.well-known/acme-challenge/vXDwOBgMA9DEq2IvxqUxxxxxxxxxx: Connection refused

  Domain: www.testdomain.com
  Type:   connection
  Detail: Fetching http://www.testdomain.com/.well-known/acme-challenge/shRZla5V7iFXB6D__xxxxx: Connection refused

Hint: The Certificate Authority failed to download the temporary challenge files created by Certbot. Ensure that the listed domains serve their content from the provided --webroot-path/-w and that files created there can be downloaded from the internet.
 

Я поместил временный файл в /.well-known/acme-challenge/ (http), но его нельзя загрузить (если я попытаюсь открыть mydomain.com/index.html — работает нормально, но перенаправляет на версию https).
Я думаю, что проблема заключается в том, что моя конфигурация также пытается перенаправлять запросы certbot на https. Есть ли у вас какие-либо идеи /.well-known/acme-challenge/ , как выйти из правил https?

Комментарии:

1. Если ваш сервер еще не настроен правильно для HTTPS, вам нужно будет отключить это, чтобы использовать certbot. Однако в сообщении об ошибке говорится, что соединение отклонено . Если ваш сайт перенаправляет HTTP на HTTPS, отключите это. Удалите эту строку, верните 301 testdomain.com $request_uri ; Подсказка. Используйте временные перенаправления, а не постоянные перенаправления во время тестирования.

Ответ №1:

Я нашел решение:

 server {
    listen [::]:80;
    listen 80;

    server_name testdomain.com www.testdomain.com;

    location ^~ /.well-known/acme-challenge {
        allow all; 
        root /var/www/certbot;
    }

    location / {
        # redirect http to https www
        return 301 https://www.testdomain.com$request_uri;
    }
     
    server_tokens off;
}
 

Теперь все перенаправляется на https, исключая содержимое этой папки /.well-known/acme-challenge