Я настраиваю letsencrypt для двух разных доменов: example.be и example.com
Я настроил Nginx для перенаправления всех запросов example.com/* на example.be/de/*
// Block 1
server {
listen 80;
server_name .example.com;
return 302 http://example.be/de$request_uri;
}
// Block 2
server {
listen 80;
server_name www.example.be;
return 302 http://example.be$request_uri;
}
Block 3
server {
listen 80;
server_name example.be;
// server config
}
В конце концов, все должно попасть в блок 3. За исключением хорошо известных запросов, которые letsencrypt делает к .example.com
302-е там временные; после того, как все работает, они переходят на 301.
Поэтому я подумал о том, чтобы «поймать» этот uri в первом блоке сервера.
// rewrite of Block 1
server {
listen 80;
server_name .example.com;
location ^~ /.well-known/ {
root /path/to/public/folder/;
try_files $uri =404;
}
return 302 http://example.be/de$request_uri;
}
Просьба к http://example.com/.well-known/test.html
приводит к перенаправлению на http://example.be/de/.well-known/test.html
Если я удалю оператор возврата, test.html
отображается страница.
Есть какие-нибудь указатели на то, как перехватить этот запрос на. Хорошо известный каталог?
Я не понимаю, почему ты использовал ^~
в твоем location
. Это необязательно. Попробуйте удалить это.
Моя рабочая конфигурация certbot:
server {
server_name www.yes-www.org yes-www.org www.yes-www.com yes-www.com;
listen [::]:80;
listen 80;
location /.well-known/acme-challenge/ {
root /var/www;
try_files $uri =404;
}
access_log off;
return 301 https://$host$request_uri;
}
Если это не сработает, попробуйте удалить все остальное из своего server
блок, который присутствует, но вы, возможно, не разместили его в своем вопросе.