Я пытаюсь перейти от самозаверяющих сертификатов к сертификатам 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/
?
webroot
изcertbot
варианта требует простого HTTP.wget
/curl
Ответы:
Попробуй это:
Поскольку
try_files
на вашем виртуальном сервере не было записи, он не знал, что делать с поступающими запросами/.well-known
.источник
location
безtry_files
просто отправляет файл изroot
каталога.try_files
и она прекрасно работает для меня. На самом деле у меня точно такой же конфиг, как указано в вопросе. Единственная разницаlocation /.well-known/
вместоlocation /.well-known
(обратите внимание на косую черту). Так может в этом проблема?