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