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

Остановка nginx на 30 (2 | 1) редирект для /.well-known location

Я настраиваю 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 блок, который присутствует, но вы, возможно, не разместили его в своем вопросе.