@776166

Как правильно перенаправить nginx с http на https?

В какой-то момент после обновления nginx на nginx/1.10.3 старые конструкции перестали работать. Сервер отдаёт ошибку 400.
Сейчас даже самые простые конструкции:
server {
        listen 80;
        server_name example.com;
        proxy_set_header Host example.com:443; #С этой строчкий или без неё. С портом или без порта.
        return 301 https://$host$request_uri; #C такой конструкцией
        #location / {rewrite ^(.*)$ https://example.com$1 permanent;} #Или с такой
}

не работают.
В штатном error_log ничего. Если включить debug, то там вот такая запись:
2019/01/21 15:24:46 [info] 16330#16330: *1061 client sent plain HTTP request to HTTPS port while reading client request headers, client: [ip], server: example.com, request: "GET / HTTP/1.1", host: "example.com"

Старая конструкция с проверкой протокола и редиректом в едином server {} тоже не работает.

Эти конфиги являются штатными, прописаны во всех мануалах и во всех ответах на подобные вопросы.
В какой хромосоме ошибка?

UPD: Похоже, проблема появляется потому что имеются два сертификата:
— example.com (на один домен)
— *.dev.example.com (wildcard на все поддомены dev.example.com)

Выписывались через letsencrypt ровно для .dev.example.com, даже не для *.example.com.
  • Вопрос задан
  • 532 просмотра
Решения вопроса 3
VELIK505
@VELIK505
Руководитель департамента profitcentr.com
if ($scheme = http) {
rewrite ^ https://$http_host$request_uri? permanent;
}
Ответ написан
@LionG
Я перенаправляю так и все работает.

# HTTP to HTTPS redirect
server {
    listen 80;
    listen [::]:80;

    server_name example.ru;

    location / {
        return 301 https://$host$request_uri;
        #rewrite ^(.*) https://$host$request_uri perpermanent;
    }
}


с rewrite тоже работало но какие то проблемы были иногда, не помню уже какие
Ответ написан
Комментировать
@776166 Автор вопроса
Проблема была не в перенаправлении, а в том, что у одного хоста в server был указан ssl on. В результате этого ВСЕ сайты по http отваливались с 400 ошибкой.
Что тут не так, я не знаю, и сейчас нет времени разбираться. Если кто-то может объяснить — будет очень хорошо и спасибно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы