Re: Варнинги после перехода на PHP 8

2021-04-17 Пенетрантность Trecolom
Evgeniy Berdnikov Wrote:
---
>  Я бы предложил проверить эти выводы на скрипте-однострочнике,
> выводящем
>  "304 Not Modified" и пустое тело. Для вариантов с Content-Length и
> без.

Спасибо, стоящая идея! Всё-таки движок передавал данные - протестировал
кусок кода в простейшем скрипте - все работает правильно. Тогда начал
"перелопачивать" код движка и нашёл, что выше функции header() передаются
данные. Есть одно echo. Если проверку с выводом header() делать до этого
echo - все работает без предупреждений от Nginx. Сам виноват - думал, данные
обязательно будут передаваться после header(), а разрабы движка всунули
данные до фунции header().

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Варнинги после перехода на PHP 8

2021-04-17 Пенетрантность Trecolom
Разобрался более детально.

Движок сайта заголовок Content-Length не передает вообще. Я добавляю этот
заголовок сразу после того места, где отдается заголовок 304 Not Modified и
с помощью CURL смотрю заголовки - он появляется в выводе заголовков, котента
нет. Но варнинг остается.
Я ставлю Content-Length произвольного размера - он появляется в выводе
заголовков варнинг не исчезает, котента нет.
Но есть одна странность - этот варнинг возникает только тогда, когда версия
протокола - HTTP/1.1 и ниже.
Если протокол версии HTTP/2.0 - варнинга нет.

Можно резюмировать то, что я нарыл:
Заголовок Content-Length от движка Nginx-су не передается.
Никаких лишних данных движок не передает.
Ошибка возникает только в том случае, когда протокол HTTP/1.1 и ниже.

Почему Nginx считает, что ему передали этот заголовок? И почему только на
HTTP/1.1? Баг Nginx?

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Варнинги после перехода на PHP 8

2021-04-17 Пенетрантность Trecolom
Разобрался более детально.

Движок сайта заголовок Content-Length не передает вообще. Я добавляю этот
заголовок сразу после того места, где отдается заголовок 304 Not Modified и
с помощью CURL смотрю заголовки - он появляется в выводе заголовков, котента
нет. Но варнинг остается.
Я ставлю Content-Length произвольного размера - он появляется в выводе
заголовков варнинг  не исчезает, котента нет.
Но есть одна странность - этот варнинг  возникает только тогда, когда версия
протокола - HTTP/1.1 и ниже.
Если протокол версии HTTP/2.0 - варнинга нет.

Можно резюмировать то, что я нарыл:
Заголовок Content-Length от движка Nginx-су не передается.
Никаких лишних данных движок не передает.
Ошибка возникает только в том случае, когда протокол HTTP/1.1 и ниже.

Почему Nginx считает, что ему передали этот заголовок? И почему только на
HTTP/1.1? Баг Nginx?

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Варнинги после перехода на PHP 8

2021-04-16 Пенетрантность Trecolom
Что я выяснил. Скрипт сайта, в ответ на запрос с заголовком
"If-Modified-Since" отдает Nginx-су заголовок "Content-Length 0" и не
нулевые данные. Отсюда и варнинг.
Скрипт делает все верно, и Nginx отвечает верно. Но как убрать это
предупреждение?

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Варнинги после перехода на PHP 8

2021-04-15 Пенетрантность Trecolom
Вот ответ сервера в сервисе "Проверка ответа сервера" Яндекса при отправке
заголовка If-Modified-Since:

Код статуса HTTP304 Not Modified
Время ответа сервера109 мс
IP сайта-
Размер страницы 0 Б

И в логах есть варнинг.

А это ответ без заголовка If-Modified-Since (и без варнинга):

Код статуса HTTP200 OK
Время ответа сервера142 мс
IP сайта-
Кодировка   UTF-8(unicode-1-1-utf-8, UTF8)
Размер страницы 118,71 КБ

Все работает правильно.
Попробую дебаг в Nginx включить, посмотреть, что он покажет.

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Варнинги после перехода на PHP 8

2021-04-15 Пенетрантность Trecolom
Спасибо, что "ткнули носом"!  Общее направление я понял, буду разбираться.

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Варнинги после перехода на PHP 8

2021-04-15 Пенетрантность Trecolom
Пока не могу сообразить, как подойти к решению этой задачи. До чего
докопался - поисковик делает запрос на сайт с заголовком If-Modified-Since
или If-None-Match и если контент страницы не изменился, движок отдает код
"304 Not Modified" - именно в этом случае возникает ошибка.

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Варнинги после перехода на PHP 8

2021-04-15 Пенетрантность Trecolom
Добрый день!
После перехода на 8 версию PHP Nginx стал сыпать предупреждениями:

*84085 upstream sent more data than specified in "Content-Length" header
while reading upstream, client: 66.249.76.60, server: .

Прчем, предупреждения появляться только после посещения страниц сайта
поисковиками (в основном - ботами Google).

В сети нашел совет отключить буферизацию:

proxy_buffering off;

Но не думаю, что это верное решение. Возможно, на этом форуме мне помогут
решить эту проблему?

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru