Я пытаюсь перейти с самозаверяющих сертификатов на сертификаты 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
.