Re: http2 push — не планируется ли поддержка по аналогии с заголовком Link?

2020-04-27 Пенетрантность Maxim Dounin
Hello!

On Mon, Apr 27, 2020 at 04:29:44PM -0400, gz wrote:

> > > Maxim Dounin Wrote:
> > > ---
> > > > > В HTML страницы бэкендом выдаются элементы 
> > с
> > > > указанием
> > > > > на ресурсы для предзагрузки.
> > > > > Хотелось бы перейти с предзагрузки на http2_push указанных
> > ресурсов.
> > > > 
> > > > А вы пробовали тестировать, что вы получите на выходе?
> > > 
> > > Практически не проверял, но здравый смысл подсказывает, что даже в
> > рамках
> > > HTTP2 проталкивание ресурсов в первом запросе позволит сэкономить
> > минимум
> > > один запрос на получение ресурсов, объявленных в  > rel="preload">.
> > 
> > Здравый смысл тут подсказывает неправильно. Поскольку сервер не 
> > знает, какие ресурсы уже есть у клиента, а каких ещё нет, он шлёт 
> > push'ы всегда, и тем самым расходует как канал, так и лишние 
> > ресурсы на сервере. Соответственно результат будет зависеть от 
> > того, насколько польза от push'а (сэкономленный 1 rtt при запросе 
> > дополнительных ресурсов у тех клиентов, у которых этих ресурсов 
> > нет) больше или меньше тех проблем, которые push добавляет всем 
> > остальным клиентам.
> 
> Востребованные ресурсы из push-кэша переходят в основной и будут
> использованы для следующих страниц.
> Клиенты умеют отказываться от проталкиваемых ресурсов, уже имеющихся в
> кэше.
> В крайнем случае несложно пометить клиента стандартным способом через
> cookie.

Проблема в том, что даже отказ от push-ресурсов - это нагрузка как 
на сервер, так и на канал.  И статистика как бы говорит нам, что в 
среднем эти накладные расходы - больше, чем польза.

Что будет конкретно в вашем случае - зависит, безусловно, от 
конкретной нагрузки и от того, насколько "в крайнем случае 
несложно" вам будет избежать лишних push'ей.  Но, повторюсь, в 
среднем - будет хуже, потому что "в крайнем случае" никто не 
заморачивается.  Именно поэтому я начал с вопроса пробовали ли вы 
тестировать, что получится.  Подозреваю, что от банального 
перекладывания существующих  в push'ы - 
станет только хуже.

> > > > Имеющиеся исследования про эффективность HTTP/2 push позволяют
> > предолжить,
> > > 
> > > > что результат скорее всего будет хуже, чем то, что у вас есть 
> > > > сейчас.
> > > 
> > > Я встречал обратные исследования.
> > > https://dexecure.com/blog/http2-push-vs-http-preload/
> > 
> > По ссылке нет исследований, там только общие соображения.  
> > Исследования выглядят как-то так:
> > 
> >
> https://github.com/httpwg/wg-materials/blob/gh-pages/ietf102/chrome_push.pdf
> 
> Не совсем понимаю какие выводы делают авторы.
> 
> Предлагают работать над приоритезацией (которая и так корректная, и
> регулируется preload'ом), использовать экспериментальный QUIC, поддержики
> которого толком нет.

Авторы ясно и однозначно показывают, что server push - в среднем 
вредит, и в большинстве случаев лишь способ выстрелить себе в 
ногу.  И предлагают работать над другими технологиями, 
потенциально более полезными.

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

(Ну и да, про приоритезацию - смешно.  Нет, это не про preload, 
это, как я понимаю, про приоритеты в рамках HTTP/2.  Там самолёт с 
бассейном и джакузи запроектирован в рамках стандарта, корректности 
ждать не приходится.)

> > > Плюс у push шире поддерживается.
> > 
> > Я бы не был столь категоричен. 
> 
> Нет никакой категоричности:
> https://caniuse.com/#search=rel%20preload — 84%
> https://caniuse.com/#feat=http2 — 94%
> 
> Не совсем корректное сравнение точно preload vs push, тем не менее.

Ну вот это сравнение - говорит о минимальной разнице, и при этом 
мы не знаем, сколько в том http2 поддержики push'а, и не знаем, 
сколько глюков там, где она таки есть.

> Я прекрасно понимаю, что push — не панацея, и хотел попробовать на практике
> проталкивание критических ресурсов, которые в любом случае приоритетны и
> будут загружены для отрисовки.

Именно с этого я и начал: попробуйте на практике на отдельных 
страницах, без попыток вытаскивать версии ресурсов через SSI и вот 
этого всего.  Получите статистику, сравните.

Сейчас же вы пришли и убеждаете разработчиков, что вам надо, 
потому что оно точно будет лучше, но тестировать вы ничего не 
тестировали и не хотите.  Так это не работает.  Придёте со 
стастикой, явно показывающей плюсы - мы задумаемся над тем, как 
облегчить вам жизнь в конфигурации с SSI.  Пока же из статистике 
есть вот только ссылка выше, из которой явно следует, что делать 
что-либо для лучше поддержки HTTP/2 push - в среднем бессмысленно.

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

Re: http2 push — не планируется ли поддержка по аналогии с заголовком Link?

2020-04-27 Пенетрантность S.A.N
> В крайнем случае несложно пометить клиента стандартным способом через
> cookie.

Советую смотреть не на куки, а на наличия клиенских заголовков -
If-None-Match и/или If-Modified-Since, только при отсутствии или не
валидности данных заголовков делать push.
Из нашего опыта - push полезен только для клиентов у которых нет валидного
кеша, в этом случаи вы получите не большой прирост в скорости около 5-10%.

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

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

Nginx перенаправление на другой адрес

2020-04-27 Пенетрантность yyyuuu
Здравствуйте друзья, есть сервер "03" на нем стоит Nginx. Я хочу чтобы он
делал все поиски которые осуществляются на яндексе перенаправлялись на гугл,
со всем компутеров в домене


Код
worker_processes 1;
 
error_log logs/error.log;
 
events {
  worker_connections 1024;
}
 

http {
  include mime.types;
  default_type application/octet-stream;
  sendfile on;
  keepalive_timeout 65;
  gzip on;



server {
listen  80;
server_name ya.ru www.ya.ru;
return 301 https://www.google.ru;
}
}
Но оно не работает так как Я хочу.
В логах
Код
2020/04/22 10:44:29 [notice] 2184#1820: signal process started

Допустим название сервера "Третий"
Обращаюсь к нему со своего компа http://Трейти/new-name
При обращение Я получаю к "Трейтий" Я уже получаю доступ к адресу
http://192.168.1.1/new-name.
То есть все запросы которые идут на http://третий .. используютися на
локальных компутерах как http://192.168.1.1/new-name.

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

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

Re: http2 push — не планируется ли поддержка по аналогии с заголовком Link?

2020-04-27 Пенетрантность Илья Шипицин
вт, 28 апр. 2020 г. в 01:29, gz :

> > > Maxim Dounin Wrote:
> > > ---
> > > > > В HTML страницы бэкендом выдаются элементы 
> > с
> > > > указанием
> > > > > на ресурсы для предзагрузки.
> > > > > Хотелось бы перейти с предзагрузки на http2_push указанных
> > ресурсов.
> > > >
> > > > А вы пробовали тестировать, что вы получите на выходе?
> > >
> > > Практически не проверял, но здравый смысл подсказывает, что даже в
> > рамках
> > > HTTP2 проталкивание ресурсов в первом запросе позволит сэкономить
> > минимум
> > > один запрос на получение ресурсов, объявленных в  > rel="preload">.
> >
> > Здравый смысл тут подсказывает неправильно. Поскольку сервер не
> > знает, какие ресурсы уже есть у клиента, а каких ещё нет, он шлёт
> > push'ы всегда, и тем самым расходует как канал, так и лишние
> > ресурсы на сервере. Соответственно результат будет зависеть от
> > того, насколько польза от push'а (сэкономленный 1 rtt при запросе
> > дополнительных ресурсов у тех клиентов, у которых этих ресурсов
> > нет) больше или меньше тех проблем, которые push добавляет всем
> > остальным клиентам.
>
> Востребованные ресурсы из push-кэша переходят в основной и будут
> использованы для следующих страниц.
> Клиенты умеют отказываться от проталкиваемых ресурсов, уже имеющихся в
> кэше.
> В крайнем случае несложно пометить клиента стандартным способом через
> cookie.
>
> > > > Имеющиеся исследования про эффективность HTTP/2 push позволяют
> > предолжить,
> > >
> > > > что результат скорее всего будет хуже, чем то, что у вас есть
> > > > сейчас.
> > >
> > > Я встречал обратные исследования.
> > > https://dexecure.com/blog/http2-push-vs-http-preload/
> >
> > По ссылке нет исследований, там только общие соображения.
> > Исследования выглядят как-то так:
> >
> >
>
> https://github.com/httpwg/wg-materials/blob/gh-pages/ietf102/chrome_push.pdf
>
> Не совсем понимаю какие выводы делают авторы.
>
> Предлагают работать над приоритезацией (которая и так корректная, и
> регулируется preload'ом), использовать экспериментальный QUIC, поддержики
> которого толком нет.
>
> > > Плюс у push шире поддерживается.
> >
> > Я бы не был столь категоричен.
>
> Нет никакой категоричности:
> https://caniuse.com/#search=rel%20preload — 84%
> https://caniuse.com/#feat=http2 — 94%
>
> Не совсем корректное сравнение точно preload vs push, тем не менее.
>
> Я прекрасно понимаю, что push — не панацея, и хотел попробовать на практике
> проталкивание критических ресурсов, которые в любом случае приоритетны и
> будут загружены для отрисовки.
>

я бы с интересом посмотрел на аналитику, которая привела к такому развитию
событий.
какие метрики вы с приложения снимаете, методика, всё вот это.


>
> Posted at Nginx Forum:
> https://forum.nginx.org/read.php?21,287846,287852#msg-287852
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: http2 push — не планируется ли поддержка по аналогии с заголовком Link?

2020-04-27 Пенетрантность gz
> > Maxim Dounin Wrote:
> > ---
> > > > В HTML страницы бэкендом выдаются элементы 
> с
> > > указанием
> > > > на ресурсы для предзагрузки.
> > > > Хотелось бы перейти с предзагрузки на http2_push указанных
> ресурсов.
> > > 
> > > А вы пробовали тестировать, что вы получите на выходе?
> > 
> > Практически не проверял, но здравый смысл подсказывает, что даже в
> рамках
> > HTTP2 проталкивание ресурсов в первом запросе позволит сэкономить
> минимум
> > один запрос на получение ресурсов, объявленных в  rel="preload">.
> 
> Здравый смысл тут подсказывает неправильно. Поскольку сервер не 
> знает, какие ресурсы уже есть у клиента, а каких ещё нет, он шлёт 
> push'ы всегда, и тем самым расходует как канал, так и лишние 
> ресурсы на сервере. Соответственно результат будет зависеть от 
> того, насколько польза от push'а (сэкономленный 1 rtt при запросе 
> дополнительных ресурсов у тех клиентов, у которых этих ресурсов 
> нет) больше или меньше тех проблем, которые push добавляет всем 
> остальным клиентам.

Востребованные ресурсы из push-кэша переходят в основной и будут
использованы для следующих страниц.
Клиенты умеют отказываться от проталкиваемых ресурсов, уже имеющихся в
кэше.
В крайнем случае несложно пометить клиента стандартным способом через
cookie.

> > > Имеющиеся исследования про эффективность HTTP/2 push позволяют
> предолжить,
> > 
> > > что результат скорее всего будет хуже, чем то, что у вас есть 
> > > сейчас.
> > 
> > Я встречал обратные исследования.
> > https://dexecure.com/blog/http2-push-vs-http-preload/
> 
> По ссылке нет исследований, там только общие соображения.  
> Исследования выглядят как-то так:
> 
>
https://github.com/httpwg/wg-materials/blob/gh-pages/ietf102/chrome_push.pdf

Не совсем понимаю какие выводы делают авторы.

Предлагают работать над приоритезацией (которая и так корректная, и
регулируется preload'ом), использовать экспериментальный QUIC, поддержики
которого толком нет.

> > Плюс у push шире поддерживается.
> 
> Я бы не был столь категоричен. 

Нет никакой категоричности:
https://caniuse.com/#search=rel%20preload — 84%
https://caniuse.com/#feat=http2 — 94%

Не совсем корректное сравнение точно preload vs push, тем не менее.

Я прекрасно понимаю, что push — не панацея, и хотел попробовать на практике
проталкивание критических ресурсов, которые в любом случае приоритетны и
будут загружены для отрисовки.

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

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

Re: http2 push — не планируется ли поддержка по аналогии с заголовком Link?

2020-04-27 Пенетрантность Maxim Dounin
Hello!

On Mon, Apr 27, 2020 at 02:44:26PM -0400, gz wrote:

> Maxim Dounin Wrote:
> ---
> > > В HTML страницы бэкендом выдаются элементы  с
> > указанием
> > > на ресурсы для предзагрузки.
> > > Хотелось бы перейти с предзагрузки на http2_push указанных ресурсов.
> > 
> > А вы пробовали тестировать, что вы получите на выходе?
> 
> Практически не проверял, но здравый смысл подсказывает, что даже в рамках
> HTTP2 проталкивание ресурсов в первом запросе позволит сэкономить минимум
> один запрос на получение ресурсов, объявленных в .

Здравый смысл тут подсказывает неправильно.  Поскольку сервер не 
знает, какие ресурсы уже есть у клиента, а каких ещё нет, он шлёт 
push'ы всегда, и тем самым расходует как канал, так и лишние 
ресурсы на сервере.  Соответственно результат будет зависеть от 
того, насколько польза от push'а (сэкономленный 1 rtt при запросе 
дополнительных ресурсов у тех клиентов, у которых этих ресурсов 
нет) больше или меньше тех проблем, которые push добавляет всем 
остальным клиентам.

> > Имеющиеся исследования про эффективность HTTP/2 push позволяют предолжить,
> 
> > что результат скорее всего будет хуже, чем то, что у вас есть 
> > сейчас.
> 
> Я встречал обратные исследования.
> https://dexecure.com/blog/http2-push-vs-http-preload/

По ссылке нет исследований, там только общие соображения.  
Исследования выглядят как-то так:

https://github.com/httpwg/wg-materials/blob/gh-pages/ietf102/chrome_push.pdf

> Плюс у push шире поддерживается.

Я бы не был столь категоричен. 

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

Re: http2 push — не планируется ли поддержка по аналогии с заголовком Link?

2020-04-27 Пенетрантность gz
Maxim Dounin Wrote:
---
> > В HTML страницы бэкендом выдаются элементы  с
> указанием
> > на ресурсы для предзагрузки.
> > Хотелось бы перейти с предзагрузки на http2_push указанных ресурсов.
> 
> А вы пробовали тестировать, что вы получите на выходе?

Практически не проверял, но здравый смысл подсказывает, что даже в рамках
HTTP2 проталкивание ресурсов в первом запросе позволит сэкономить минимум
один запрос на получение ресурсов, объявленных в .

> Имеющиеся исследования про эффективность HTTP/2 push позволяют предолжить,

> что результат скорее всего будет хуже, чем то, что у вас есть 
> сейчас.

Я встречал обратные исследования.
https://dexecure.com/blog/http2-push-vs-http-preload/

Плюс у push шире поддерживается.

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

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

Re: nginx + php-fpm = баг?

2020-04-27 Пенетрантность grey
Сгораю от стыда - дело было в количестве воркеров :)

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

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

Re: http2 push — не планируется ли поддержка по аналогии с заголовком Link?

2020-04-27 Пенетрантность Maxim Dounin
Hello!

On Mon, Apr 27, 2020 at 09:33:08AM -0400, gz wrote:

> В HTML страницы бэкендом выдаются элементы  с указанием
> на ресурсы для предзагрузки.
> Хотелось бы перейти с предзагрузки на http2_push указанных ресурсов.

А вы пробовали тестировать, что вы получите на выходе?  Имеющиеся 
исследования про эффективность HTTP/2 push позволяют предолжить, 
что результат скорее всего будет хуже, чем то, что у вас есть 
сейчас.

[...]

> Нет ли в планах поддерживать преобразования  в
> http2_push?

Нет, такого в планах нет.

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

Re: nginx + php-fpm = баг?

2020-04-27 Пенетрантность Alexey

27.04.2020 16:38, grey пишет:

Приветствую всех!

Прежде чем создавать топик, перепроверил всё несколько раз, но объяснения
такого поведения nginx найти не смог.

Суть проблемы: если из php-скрипта со своего сервера я обращаюсь посредством
curl или fopen к своему же сайту, то получаю ошибку "504 Gateway Time-out".
Если выполнить в консоли сервера "php /www/test.ru/1.php", то скрипт вернет
html-страницу сервера. Если открыть в браузере адрес test.ru/1.php, то сайт
будет какое-то время думать, а по прошествию таймаута вернет "504 Gateway
Time-out" (пока сайт будет думать, в лог будут сыпаться ошибки
2020/04/27 15:02:09 [error] 6540#6968: *960636 connect() failed (10061: No
connection could be made because the target machine actively refused it)
while connecting to upstream, client: 5.34.*.*, server: test.ru, request:
"GET / HTTP/2.0", upstream: "fastcgi://127.0.0.1:9123", host: "test.ru",
referrer: "http://***.ru/;). Если в скрипте заменить адрес сервера test.ru
на любой другой внешний, пусть будет ya.ru, то и в консоли и в браузере все
открывает без ошибок. Из чего я делаю вывод, php тут не при чем, затык
именно в nginx. nginx не самой последней версии - 1.17.3 и обновить пока не
могу, php 7.3.х - тоже самая последняя версия.


А почему в нгинксе, а не в php. сделайте запрос за статичным файлом к 
тому же нгинксу, который отдаётся не  через php.


Воркеров php сколько ? точно >1?

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

nginx + php-fpm = баг?

2020-04-27 Пенетрантность grey
Приветствую всех!

Прежде чем создавать топик, перепроверил всё несколько раз, но объяснения
такого поведения nginx найти не смог.

Суть проблемы: если из php-скрипта со своего сервера я обращаюсь посредством
curl или fopen к своему же сайту, то получаю ошибку "504 Gateway Time-out".
Если выполнить в консоли сервера "php /www/test.ru/1.php", то скрипт вернет
html-страницу сервера. Если открыть в браузере адрес test.ru/1.php, то сайт
будет какое-то время думать, а по прошествию таймаута вернет "504 Gateway
Time-out" (пока сайт будет думать, в лог будут сыпаться ошибки
2020/04/27 15:02:09 [error] 6540#6968: *960636 connect() failed (10061: No
connection could be made because the target machine actively refused it)
while connecting to upstream, client: 5.34.*.*, server: test.ru, request:
"GET / HTTP/2.0", upstream: "fastcgi://127.0.0.1:9123", host: "test.ru",
referrer: "http://***.ru/;). Если в скрипте заменить адрес сервера test.ru
на любой другой внешний, пусть будет ya.ru, то и в консоли и в браузере все
открывает без ошибок. Из чего я делаю вывод, php тут не при чем, затык
именно в nginx. nginx не самой последней версии - 1.17.3 и обновить пока не
могу, php 7.3.х - тоже самая последняя версия.

Конфиг nginx-а минимальный.

server {
server_name  test.ru;

location ~ \.(php|html)$ {
fastcgi_pass   127.0.0.1:9123;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME 
$document_root$fastcgi_script_name;
includefastcgi_params;
}
}

Сам скрипт, который вызывает проблему:

https://test.ru/;);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$$contents=curl_exec ($ch);
curl_close ($ch);

/*
или вариант без curl-а
$handle = fopen("https://test.ru;, "rb");
$contents = stream_get_contents($handle);
fclose($handle);
*/

echo $contents;
?>

Может это я где-то туплю, но где понять не могу и почему смена адреса решает
проблему?

Просьба проверить у себя.

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

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

http2 push — не планируется ли поддержка по аналогии с заголовком Link?

2020-04-27 Пенетрантность gz
В HTML страницы бэкендом выдаются элементы  с указанием
на ресурсы для предзагрузки.
Хотелось бы перейти с предзагрузки на http2_push указанных ресурсов.

Казалось бы, нет проблемы перейти на заголовок Link, который модулем
ngx_http_v2_module при http2_push_preload on будет преобразован в push'и.
Однако, в путях к ресурсам используются SSI-вставки с текущими версиями, а
HTML вместе в SSI-директивами хранится в кэше.
Условно:


" as="style"/>
…
"/>
…


…



А после работы SSI получаем нужный результат:



…

…


…



Выходит, поможет либо поддержка SSI в заголовках ответа — чего nginx не
умеет, либо поддержка модулем ngx_http_v2_module преобразования  в http2_push.

Посмотрел, было, в строну njs в надежде что смогу процессить тело ответа
после SSI, выкусывать оттуда , преобразовывать их в
Link-заголовки, которые затем будут преобразованы в ngx_http_v2_module в
push'и, но в js_content тело ответа оказалось пустым, а js_filter работает
на уровне stream'а.
Так же попробовал использовать js_set для формирования заголовка Link на
основе  в теле, но в этом случае в теле  в теле сохранятся и неясно как поведёт себя браузер при
получении и preload-инструкций и http2_push'а.

Нет ли в планах поддерживать преобразования  в
http2_push?

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

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