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

Перенаправить все запросы на HTTPS, кроме одного подкаталога

Я пытаюсь перейти с самозаверяющих сертификатов на сертификаты Let's Encrypt на моем веб-сервере nginx.

В настоящее время я перенаправляю все запросы на http/80 к https/443, который использует самоподписанный сертификат, который я создал недавно.

Теперь - насколько я понимаю, Let's Encrypt делает запрос на порт 80 (поскольку я использую webroot вариант certbot). Эти запросы перенаправляются, что делает создание сертификата неудачным.

Я попытался добиться этого с помощью следующего серверного блока, прослушивая порт 80:

server {
        listen  80;     
        server_name     sub.domain.tld;
        server_tokens   off;


        location /.well-known {
                root /var/www/letsencrypt;
        }

        location / {
                return 301 https://$host$request_uri;
        }
}

Но просит /.well-known перенаправлены на https/443 в любом случае.

Как я могу перенаправить все запросы из http/80 к https/443, кроме запросов к /.well-known/?

Попробуй это:

server {
    listen  80;     
    server_name     sub.domain.tld;
    server_tokens   off;

    root /var/www/letsencrypt;

    location /.well-known {
        try_files $uri $uri/ =404;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

Поскольку не было try_files запись на вашем виртуальном сервере, он не знал, что делать с запросами, приходящими на /.well-known.