Проблема Nginx http2_push - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь реализовать http2_push, используя nginx в Windows 7. Я выполнил шаги, упомянутые в этой статье .

Я использую nginx 1.13.12 исполняемую версию. Создал и установил самоподписанные сертификаты, и он работает нормально.

Как уже упоминалось в в этом ответе , я также проверил и решил проблему с проверкой сертификата.

Тем не менее файлы, которые я хочу отправить, не помещаются в браузер. Я проверяю это через вкладку сети в инспекторе (Google Chrome - скриншот прилагается).

nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       443 ssl http2;
        server_name  localhost;

        ssl_certificate      ssl/localhost.crt;
        ssl_certificate_key  ssl/localhost.key;

        location = /test.html {
            root html;
            http2_push /stylepush.css;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Вывод (Снимок экрана):

enter image description here

Может кто-нибудь помочь мне, где я иду не так? Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 15 мая 2018

HTTP / 2 push работает только тогда, когда перенаправляемый ресурс необходим странице (то есть на него ссылаются в HTML). В этом случае тот факт, что /stylepush.css не загружается страницей вообще (не говоря уже о Push как инициаторе), показывает, что он не используется.

Если вы перейдете на chrome://net-internals/#http2, вы должны увидеть это как невостребованный толчок:

enter image description here

Добавьте ссылку на этот CSS-файл в ваш HTML, и вы должны увидеть его как нажатый.

enter image description here

Если нет, перейдите на chrome://net-internals/#events&q=type:HTTP2_SESSION в Chrome и предоставьте данные сеанса HTTP / 2.

Кроме того, Chrome требуется распознанный сертификат, прежде чем он позволит вам кэшировать ресурсы (а ресурсы HTTP / 2 помещаются в кеш перед их использованием). Начиная с Chrome версии 58, они также требуют, чтобы в сертификате было задано альтернативное имя субъекта (SAN), что требует дополнительных настроек для настройки при создании самозаверяющего сертификата .

...