Что я здесь упускаю?

server {
    listen 80;
    listen 443;

    if ($scheme = http) { rewrite ^(.*)$ https://domain.com$1 permanent; }
    if ($host ~* ^www\.) { rewrite ^(.*)$ https://domain.com$1 permanent; }
    ...
}

Это дает мне ошибку цикла перенаправления.

Turbo Host

Ответов: 1

Ответы (1)

Пользуясь имеющейся информацией, я попробую это сделать. При перенаправлении всех запросов с http на https хорошей идеей будет отдельный блок сервера для порта 80. Аналогичным образом, при перенаправлении всех запросов с одного имени хоста на другое, отдельная блокировка сервера для каждого имени хоста также является хорошей идеей.

server {
    listen 80;
    server_name domain.com www.domain.com;

    return 301 https://domain.com$request_uri;
}

server {
    listen 443;
    server_name www.domain.com;

    return 301 https://domain.com$request_uri;
}

server {
    listen 443;
    server_name domain.com;

    ...
}

Так что мы слушаем порт 80 для любого имени хоста и перенаправляем на https://domain.com, а также слушаем порт 443 для https://www.domain.com и также перенаправляем эти запросы на https://domain.com. Таким образом, конфигурация Nginx будет понятной и легко читаемой.

Важно: Обратите внимание, что если ваш SSL-сертификат не включает www.domain.com, то запросы к https://www.domain.com приведут к ошибке сертификата и довольно неприятным предупреждениям браузера. В этом случае вам следует заменить сертификат на тот, который включает оба имени хоста.

2022 WebDevInsider