Задать вопрос

Как получается неверный редирект в nginx при неверном resolver?

Задача: есть сайт example.com с двумя поддоменами: ru.example.com , en.example.com .
Требуется обеспечить редиректы с http ( c www и без ) на https без www , и с https://www.* на https без www
DNS-сервера на хосте нет.
обнаружилось, что если в конфиг добавить строчку:
resolver 127.0.0.1;
то редиректы начинают работать неверно: с https://example.com перекидывает на https://en.example.com . Кто-нибудь может объяснить, почему? И почему именно на en.example.com - потому, что он последний в директиве server_name ?

Конфиг привожу ниже
server {
    listen   80; ## listen for ipv4
    server_name ~^(www\.)?(ru\.|en\.)?(example.com)$;

    location /.well-known/acme-challenge/ {
        alias /var/www/letsencrypt/;
    }

    location / {
        rewrite ^ https://$2$3$request_uri permanent;
    }
}

server {
    listen 250.250.250.250:443 ssl;
    server_name ~^(www\.)(ru\.|en\.)?(example.com)$;
    access_log off;

    include snippets/example.com.ssl;

    expires max;
    return 301 https://$2$3$request_uri;
}

server {

    server_name example.com ru.example.com en.example.com;
    listen 250.250.250.250:443 ssl;

    include snippets/example.com.ssl;

    root           /var/www/example.com/public;

    # Point index to the Laravel front controller.
    index           index.php;

    # Remove trailing slash to please routing system.
    if (!-d $request_filename) {
        rewrite     ^/(.+)/$ /$1 permanent;
    }
    
    location /.well-known/acme-challenge/ {
        alias /var/www/letsencrypt/;
    }

    location / {
        # URLs to attempt, including pretty ones.
        try_files   $uri $uri/ /index.php?$args;
    }

    # PHP FPM configuration.
    location ~* \.php$ {
            fastcgi_pass                    unix:/run/php/php7.2-fpm.sock;
            fastcgi_index                   index.php;
            fastcgi_split_path_info         ^(.+\.php)(.*)$;
            include                         /etc/nginx/fastcgi_params;
            fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
  • Вопрос задан
  • 59 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы