Рейтинг:0

Nginx помещает браузер в цикл перенаправления при использовании нескольких серверных блоков

флаг cn

Я использую Nginx для размещения нескольких виртуальных хостов (или серверные блоки в номенклатуре Nginx). Все эти хосты используют один и тот же домен, каждому из которых назначен собственный субдомен. Один поддомен входит в бесконечный цикл перенаправления, что явно нежелательно.

NB: я отредактировал свое доменное имя и заменил его на <mysite>.

Корневой домен - www.<мойсайт>.com получает запросы, как и ожидалось. Он также перенаправляет HTTP-запросы на HTTPS. Он настроен в <мойсайт>-www.

Поддомен assets.<mysite>.com также получает запросы, как и ожидалось. Он не настроен для перенаправления HTTP на HTTPS, обслуживается любой протокол. Нет никаких проблем. Он настроен в <mysite>-холдинг.

Последний поддомен soft.<mysite>.com настраивается идентично assets.<mysite>.com но колеблется. Вместо этого он отправляет браузер в цикл перенаправления, каждый раз указывая на https://soft.<мойсайт>.com И это несмотря на то, что в файле конфигурации для этого виртуального хоста нет такой настройки. Он настроен в <мойсайт>-мягкий.

Конфиг для <мойсайт>-www:

сервер {
    имя_сервера www.<mysite>.com;

    слушать 80 default_server ;
    слушать [::]:80 default_server;

    место расположения / {
        вернуть 301 https://$server_name$request_uri;
    }

    корень /var/www/html;
}

сервер {
    слушать 443 ssl default_server;
    ssl_certificate /etc/letsencrypt/live/www.<mysite>.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/www.<mysite>.com/privkey.pem;
    включить /etc/letsencrypt/options-ssl-nginx.conf;

    корень /var/www/html;
    имя_сервера www.<mysite>.com;
    страница_ошибки 404 /404.html;

    место расположения / {
        limit_req zone=mylimit Burst=20 nodelay;
        try_files $uri $uri/ =404;
        индекс index.html index.htm;
    }
}

Конфиг для <mysite>-холдинг:

сервер {
    слушать 80;
    слушать [::]:80;
    слушать 443 ssl;

    имя_сервера assets.<mysite>.com;

    ssl_certificate /etc/letsencrypt/live/assets.<mysite>.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/assets.<mysite>.com/privkey.pem; 
    включить /etc/letsencrypt/options-ssl-nginx.conf;

    корень /var/www/холдинг/html;

    место расположения / {
        limit_req zone=mylimit Burst=20 nodelay;
        try_files $uri $uri/ =404;
        индекс index.html;
    }

Конфигурационный файл для soft.<mysite>.com идентичен приведенному выше, за исключением того, что там, где написано «активы», написано «мягкое». И все же он входит в этот бесконечный цикл перенаправления.

Я пытался изменить директиву местоположения. я консультировался документы которые оказались лучше, чем ожидалось. Все равно зацикливается. Помощь будет оценена!

Michael Hampton avatar
флаг cz
Пожалуйста, опубликуйте вывод `nginx -T`
Рейтинг:0
флаг cn

Как оказалось, проблема заключалась в следующем:

Я не правильно сделал символическую ссылку из /сайты с поддержкой к /сайты-доступны и он использовал старый дубликат <мойсайт>-www что вызвало цикл перенаправления.

Решением было настроить файл, как указано выше в моем вопросе. Либо копирование его на сайты с поддержкой, либо правильная символическая ссылка решит проблему для всех, кто находится в аналогичном затруднительном положении.

Моя вина.

флаг us
У вас должен быть виртуальный хост default_server, который перехватывает все запросы, не соответствующие какому-либо виртуальному серверу. Это упростит выявление подобных проблем, поможет решить проблемы с дублированием контента в Google и т. д.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.