400 Bad Request The plain HTTP request was sent to HTTPS port
Maxim Dounin
mdounin на mdounin.ru
Вт Июл 5 23:04:11 UTC 2022
Hello!
On Tue, Jul 05, 2022 at 03:40:47PM -0400, milov wrote:
> В общем решил проблему.
>
> У меня на одном айпи висит несколько сайтов и в конфигах nginx прописано у
> двух сайтов default_server, оставил только у одного и проблема решилась.
> Возможно это баг какой-то и стоит куда-то сообщить.
>
> Странно только почему раньше работали редиректы )
Если у одного и того же listen-сокета используется флаг
default_server в двух разных блоках server{} - это фатальная
ошибка, nginx с таким конфигом работать не будет. В логах и при
тестировании конфигурации будет ошибка вида:
2022/07/06 01:40:43 [emerg] 900#100127: a duplicate default server for 0.0.0.0:8080 in ...
Если раньше работало - возможно, nginx не перезапускали, и он
работал со старым конфигом, до появления ошибки в конфиге.
Если же флаг default_server использовался у разных listen-сокетов,
то убрав его у одного из listen-сокетов вы просто изменили сервер
по умолчанию для этого listen-сокета. Это может исправить
проблему с "client sent plain HTTP request to HTTPS port", если
использовалась кривая конфигурация с "ssl on;" в блоке server с
listen-сокетами, которые не должны использовать SSL. Директива
"ssl" объявлена устаревшей 4 года назад, в nginx 1.15.0, причём
именно потому, что её использование легко приводит к подобным
ошибкам. Если директива "ssl" действительно используется -
конфигурацию следует переписать с использованием "listen ... ssl;"
вместо неё. Подробнее смотри http://nginx.org/r/ssl/ru и
http://nginx.org/r/listen/ru.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru