Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-10 Пенетрантность Maxim Dounin
Hello!

On Sat, Jul 09, 2022 at 04:46:23AM -0400, milov wrote:

> Как выловить такие ошибки в логе? я их не вижу, есть ошибки типа warn Но это
> не то.

Вы чуть раньше в этом треде писали Илье, "client sent plain HTTP 
request to HTTPS port".  Как и другие ошибки в клиентских 
запросах, эти ошибки логгируются на уровне info.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-09 Пенетрантность milov
Как выловить такие ошибки в логе? я их не вижу, есть ошибки типа warn Но это
не то.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,294635,294697#msg-294697

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-07 Пенетрантность Maxim Dounin
Hello!

On Thu, Jul 07, 2022 at 04:57:27AM -0400, milov wrote:

> http://paste.org.ru/?j76h3l  Изменил айпи, пути и домены.

Каких-либо проблем в конфиге, относящихся к обсуждаемому вопросу, 
я не вижу: директива "ssl" в конфиге не используется вообще, 
каких-либо перенаправлений, где бы мог быть указан порт (и 
соответственно могло бы вылезти несовпадение схемы и порта), опять 
же нет.

А как выглядят сообщения об ошибках в error log'е полностью?  
Интересует в первую очередь дополнительные поля, указанные после 
ошибки, в частности, server, request, host, и referrer.  Ну и если 
проблема воспроизводится из браузера (а тема как бы намекает, что 
да) - посмотрите, какие именно запросы делаются, и что именно на 
них отвечают.

Возможно, причина где-то в php-коде, и в некорректных 
перенаправлениях, возвращаемых из него.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-07 Пенетрантность milov
http://paste.org.ru/?j76h3l  Изменил айпи, пути и домены.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,294635,294670#msg-294670

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-07 Пенетрантность Антон Горлов via nginx-ru

07.07.2022 11:34, milov пишет:

А как тут прикрепить файл? полотно длинное сюда постить.


Нет сюда простыню не надо.
Запостите содержимое например на http://paste.org.ru/ ,а сюда ссылку
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-07 Пенетрантность milov
А как тут прикрепить файл? полотно длинное сюда постить.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,294635,294667#msg-294667

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-06 Пенетрантность Maxim Dounin
Hello!

On Wed, Jul 06, 2022 at 04:44:41AM -0400, milov wrote:

> Maxim Dounin Wrote:
> ---
> > У вас явно некорректная конфигурация, использующая "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).
> > 
> 
> Вот конфиг, я его постил в самом начале, как видите разнесено по разным
> блокам server{}
> 
> server {
> listen 80;
> server_name .local.map;
> rewrite ^(.*) https://$host$1 permanent;
> #return 301 https://$host$request_uri;
> }
> 
> server {
> listen 443 ssl http2 default_server;
> 
> ssl_certificate /etc/letsencrypt/live/local.map/fullchain.pem;
> ssl_trusted_certificate /etc/letsencrypt/live/local.map/fullchain.pem;
> ssl_certificate_key /etc/letsencrypt/live/local.map/privkey.pem;
> 
> server_name .local.map;
> set $root /var/www/msk/data/local.map;
> root $root;
> access_log off; .
> 
> есть второй сайт, у которого конфиг такой-же, только пути разные плюс убрал
> на другой айпи сокет и убрал default_server после чего заработало.

Покажите полную конфигурацию - вывод "nginx -T".  Как уже сказано 
выше, судя по симптомам у вас в конфиге где-то "ssl on;", и от 
этого проблемы.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-06 Пенетрантность milov
Maxim Dounin Wrote:
---
> У вас явно некорректная конфигурация, использующая "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).
> 

Вот конфиг, я его постил в самом начале, как видите разнесено по разным
блокам server{}

server {
listen 80;
server_name .local.map;
rewrite ^(.*) https://$host$1 permanent;
#return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2 default_server;

ssl_certificate /etc/letsencrypt/live/local.map/fullchain.pem;
ssl_trusted_certificate /etc/letsencrypt/live/local.map/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/local.map/privkey.pem;

server_name .local.map;
set $root /var/www/msk/data/local.map;
root $root;
access_log off; .

есть второй сайт, у которого конфиг такой-же, только пути разные плюс убрал
на другой айпи сокет и убрал default_server после чего заработало.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,294635,294657#msg-294657

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность Maxim Dounin
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 mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность milov
возможно вы правы но у меня версия nginx 1.13

ещё заметил такое, что если несколько сайтов на одном айпи  то проблема
возвращается, развел по разным айпи и работает, что уже хорошо. непонятно
почему проблема вылезла после обновления сертификата. а нжинкс перегружаю
после каждого обновления сертификата. 

почему раньше всегда работало, а сейчас вылезло, в логах ничего
подозрительного нет, что и побудило меня обратиться на форум.

спасибо за ответы.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,294635,294646#msg-294646

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность Maxim Dounin
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 mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность milov
В общем решил проблему. 

У меня на одном айпи висит несколько сайтов и в конфигах nginx прописано у
двух сайтов default_server, оставил только у одного и проблема решилась.
Возможно это баг какой-то и стоит куда-то сообщить.

Странно только почему раньше работали редиректы )

Спасибо всем за помощь.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,294635,294643#msg-294643

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность milov
Почему проблема с http2 это в другой же секции?

Редирект то здесь не срабатывает
server {
listen 80;
server_name .local.map;
rewrite ^(.*) https://$host$1 permanent;
#return 301 https://$host$request_uri;
}

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,294635,294641#msg-294641

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность Maxim Dounin
Hello!

On Tue, Jul 05, 2022 at 05:49:57AM -0400, milov wrote:

> Прошу посильной помощи, появилась ошибка 400 Bad Request с http на https
> после обновления сертификата летс энкрипт
> 
> Конфиг nginx не менялся уже года 3 как минимум, редиректы хорошо работали.
> Вчера обновил сертификат летс энкрипт и тут понеслись ошибки редиректа, хотя
> и раньше обновлял этот сертификат и было всё хорошо.
> 
> Вот конфиг:
> 
> server {
> listen 80;
> server_name .local.map;
> rewrite ^(.*) https://$host$1 permanent;
> #return 301 https://$host$request_uri;
> }
> 
> server {
> listen 443 ssl http2;
> 
> ssl_certificate /etc/letsencrypt/live/local.map/fullchain.pem;
> ssl_trusted_certificate /etc/letsencrypt/live/local.map/fullchain.pem;
> ssl_certificate_key /etc/letsencrypt/live/local.map/privkey.pem;
> 
> server_name .local.map;
> set $root /var/www/msk/data/local.map;
> root $root;
> access_log off;
> и т.д

Начать с простого: перегрузить конфиг (или просто рестартовать 
nginx), если не поможет - внимательно его проверить на предмет 
"ssl on;" и "listen ... ssl;".

Проверять лучше через "nginx -T", дабы случайно не упустить 
какие-либо include'ы.

Отмечу, что если сертификаты обновлялись с помощью Certbot, то он 
при обновлении модифицирует конфиги nginx'а (а потом возвращает 
всё "как было").  Это может заканчиваться, скажем так, неожиданно.  
Лично я рекомендую для выпуска сертификатов использовать 
Dehydrated и необходимые дополнения в конфиг прописывать руками.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность Илья Шипицин
не могу соотнести это сообщение об ошибке с 400-кой.

есть еще мысль (если вдруг error_log не поможет), попробовать отключить
http2. помнится какие-то очень экзотические ошибки на уровне http2 давали
400 и не логировались.

вт, 5 июл. 2022 г. в 15:57, milov :

> [info] 23978#0: *221 client sent plain HTTP request to HTTPS port while
> reading client request headers
>
> closed keepalive connection
>
> вот такие логи полезли
>
> Posted at Nginx Forum:
> https://forum.nginx.org/read.php?21,294635,294637#msg-294637
>
> ___
> nginx-ru mailing list -- nginx-ru@nginx.org
> To unsubscribe send an email to nginx-ru-le...@nginx.org
>
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность milov
[info] 23978#0: *221 client sent plain HTTP request to HTTPS port while
reading client request headers

closed keepalive connection

вот такие логи полезли

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,294635,294637#msg-294637

___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org


Re: 400 Bad Request The plain HTTP request was sent to HTTPS port

2022-07-05 Пенетрантность Илья Шипицин
добавьте error_log уровня info

Основная функциональность (nginx.org)


в соответствующий сайт и на уровне сервера.
в некоторых случаях 400-ка это bad request и запрос не попадает в сайт, а
логируется на уровне выше

вт, 5 июл. 2022 г. в 14:50, milov :

> Прошу посильной помощи, появилась ошибка 400 Bad Request с http на https
> после обновления сертификата летс энкрипт
>
> Конфиг nginx не менялся уже года 3 как минимум, редиректы хорошо работали.
> Вчера обновил сертификат летс энкрипт и тут понеслись ошибки редиректа,
> хотя
> и раньше обновлял этот сертификат и было всё хорошо.
>
> Вот конфиг:
>
> server {
> listen 80;
> server_name .local.map;
> rewrite ^(.*) https://$host$1 permanent;
> #return 301 https://$host$request_uri;
> }
>
> server {
> listen 443 ssl http2;
>
> ssl_certificate /etc/letsencrypt/live/local.map/fullchain.pem;
> ssl_trusted_certificate /etc/letsencrypt/live/local.map/fullchain.pem;
> ssl_certificate_key /etc/letsencrypt/live/local.map/privkey.pem;
>
> server_name .local.map;
> set $root /var/www/msk/data/local.map;
> root $root;
> access_log off;
> и т.д
>
> Posted at Nginx Forum:
> https://forum.nginx.org/read.php?21,294635,294635#msg-294635
>
> ___
> nginx-ru mailing list -- nginx-ru@nginx.org
> To unsubscribe send an email to nginx-ru-le...@nginx.org
>
___
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org