400 Bad Request The plain HTTP request was sent to HTTPS port
Maxim Dounin
mdounin на mdounin.ru
Ср Июл 6 01:52:20 UTC 2022
Hello!
On Tue, Jul 05, 2022 at 07:20:46PM -0400, milov wrote:
> возможно вы правы но у меня версия nginx 1.13
Возможность задавать конфигурацию с помощью "listen ... ssl"
появилась в nginx 0.7.14.
Но, конечно, использовать nginx 1.13.x в продакшне я бы не
рекомендовал.
> ещё заметил такое, что если несколько сайтов на одном айпи то проблема
> возвращается, развел по разным айпи и работает, что уже хорошо. непонятно
> почему проблема вылезла после обновления сертификата. а нжинкс перегружаю
> после каждого обновления сертификата.
>
> почему раньше всегда работало, а сейчас вылезло, в логах ничего
> подозрительного нет, что и побудило меня обратиться на форум.
У вас явно некорректная конфигурация, использующая "ssl on;".
Основное правило при использовании "ssl on;" очень простое: SSL и
не-SSL listen-сокеты должны использоваться строго в разных блоках
server{}. Любые попытки совместить - чреваты. Ибо если вдруг у
вас в сервере по умолчанию для не-SSL listen-сокета окажется "ssl
on;", то сокет станет SSL-сокетом.
Скорее всего "раньше всегда работало" потому, что в сервера по
умолчанию для не-SSL listen-сокетов стояли корректные, а сейчас
из-за каких-то минимальных изменений конфига (скажем, кто-то
добавил блок server с несколькими listen-сокетами и "ssl on;") -
ситуация поменялась.
Если по каким-то причинам хочется исправить конфигурацию, не
переходя на "listen ... ssl" - показывайте полную конфигурацию,
поможем найти источник проблем.
Но проще и правильнее сразу переделать всё на использование
"listen ... ssl", благо это тривиально: "ssl on;" из конфига
убрать, а у listen-сокетов, которые должны использовать SSL,
добавить флаг "ssl" (как минимум один раз, например, в сервере по
умолчанию, но можно во всех директивах listen).
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru