Re: странное поведение Chrome на http2

Илья Шипицин chipitsine на gmail.com
Вт Дек 1 05:52:48 UTC 2020


вт, 1 дек. 2020 г. в 04:11, Maxim Dounin <mdounin на mdounin.ru>:

> Hello!
>
> On Mon, Nov 30, 2020 at 11:58:59PM +0500, Илья Шипицин wrote:
>
> > привет!
> >
> > может кто сталкивался, и знает, что с этим можно сделать.
> > ситуация - хостинг высокой плотности, на одном IP много доменов.
> > домены разные, каждый со своей бизнес логикой.
> >
> > у Chrome  включается какая-то оптимизация, и типа "ну раз IP один, то я
> > буду весь трафик гонять через одно tcp подключение". все бы ничего, но
> > некоторые сайты иногда рвут соединение. а Chrome в итоге рвет не
> > подключение до конкретного сайта, а вообще все, которые он умудрился
> > связать с этим tcp подключением.
> >
> > частный пример - сайт, который иногда формирует очень длинные URL, не
> > помещающиеся в  дефолтный http2_max_field_fize, при возникновение такой
> > ситуации Chrome рвет всё до этого IP адреса.
> >
> > как-то не по христиански чтоли.
> >
> > подумалось, что аналогичных хостингов высокой плотности в рассылке может
> > быть достаточное количество. не первый же  я с таким столкнулся?
>
> Это называется connection reuse, правила прописаны тут:
>
> https://tools.ietf.org/html/rfc7540#section-9.1.1
>
> В частности:
>
>    For "https" resources, connection reuse additionally depends on
>    having a certificate that is valid for the host in the URI.  The
>    certificate presented by the server MUST satisfy any checks that the
>    client would perform when forming a new TLS connection for the host
>    in the URI.
>
> То есть если хочется, чтобы соединения не reuse'ались, можно
> сконфигурировать разные сертификаты для разных серверов (или групп
> серверов).
>
> Ну либо руками возвращать 421 по необходимости, проверяя $ssl_server_name.
>

в исходниках это вот так

    if ((size_t) len > h2scf->max_field_size) {
        ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0,
                      "client exceeded http2_max_field_size limit");

        return ngx_http_v2_connection_error(h2c,
NGX_HTTP_V2_ENHANCE_YOUR_CALM);
    }


как можно в этом месте вернуть "по необходимости" 421 ?



>
> --
> Maxim Dounin
> http://mdounin.ru/
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20201201/6331924d/attachment.htm>


Подробная информация о списке рассылки nginx-ru