В какой-то момент после обновления 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.