LINUX.ORG.RU
ФорумAdmin

Не срабатывает редирект в nginx

 ,


0

1

Интересующий кусок конфига

if ($http_host != "www.example.com") {
                rewrite ^ $scheme://www.example.com$request_uri permanent;
        }
Таким образом при обращении к https://example.com редирект на https://www.example.com не происходит и, поскольку сертификат сгенерирован для *.example.com, браузер ругается.
if ($http_host != "www.example.com") {
                rewrite ^ https://www.example.com$request_uri permanent;
        }
Таким образом редирект происходит, но мне не надо все соединения перенаправлять на https. Где косяк? Конфиг сервера http://pastebin.com/hhhdAW25
nginx 1.2.1


От того как Вы напишите конфиг, при условии что используете сертификат один на все домены, отстуствие ругани на сертификат не пропадет.

При запросе на https://example.com/ (с сертом для *.example.com) - ругань будет.

При запросе на https://*.example.com/ (с сертом для *.example.com) - ругани не будет.

Если хотите сохранить протокол и сделать редирект, первый вариант конфига верный.

anonymous ()
Ответ на: комментарий от anonymous

Верный-то, он верный, но не работает.
С первым вариантом конфига

http://example.com -> http://www.example.com
https://example.com -> https://example.com (browser warning)
Со вторым вариантом
http://example.com -> https://www.example.com
https://example.com -> https://www.example.com
Мне же нужно, чтобы редирект шел так
http://example.com -> http://www.example.com
https://example.com -> https://www.example.com

getup ()
Ответ на: комментарий от getup

Собственно, редирект при первом варианте конфига срабатывает только тогда, когда в браузере жмешь игнорировать предупреждение.
После этого при последующих заходах по адресу https://example.com редирект происходит без предупреждений.
Как я понял, до nginx'а в случае с https не доходит запрос, т.к. браузер сначала проверяет сертификат. Следовательно, это никак не обойти и обязательно сразу заходить по https://www.example.com, чтобы не было проблем.
Получается, что никак это не решить, кроме создания отдельного сертификата для example.com в дополнение к *.example.com?

getup ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.