Назад | Перейти на главную страницу

Невозможно реализовать Server Push

Я могу реализовать HTTP / 2 на моем сервере Nginx, который находится в контейнере Docker. Однако я не могу выполнить отправку сервера.

Это файлы конфигурации, которые я написал. / и т. д. / nginx / сайты-доступные / lilstories

server {  
  listen 443 ssl http2 default_server;  
  listen [::]:443 ssl http2 default_server;  
  include snippets/self-signed.conf;  
  include snippets/ssl-params.conf;  
  root /var/www/lilstories;  
  index Joke.html sniper.html;  
  server_name x.x.x.x;  
  location = /Joke.html {  
    http2_push /var/www/lilstories/YNWA.jpg;  
  }  
}  

Инструмент разработчика не отображает Push в столбце инициатора для файла jpg. Ошибки не отображаются в журнале ошибок. Может ли кто-нибудь указать, где я ошибаюсь?

Я предполагаю, что вы используете самозаверяющие сертификаты на основе этого имени конфигурации?

include snippets/self-signed.conf;

Если самозаверяющий сертификат не пользуется доверием в браузере (так вы видите красный замок, через который вы, вероятно, щелкнули?), То кеширование не будет использоваться пользователя Chrome. Это включает в себя Push Cache, необходимый для работы HTTP / 2 Push..

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

Это в дополнение к правильному комментарию HBruijn о неправильном использовании синтаксиса.

В http2_push За директивой следует путь URI, но похоже, что вы указали абсолютный путь в своей файловой системе.

Вместо того:

http2_push /var/www/lilstories/YNWA.jpg; 

использовать

http2_push /YNWA.jpg;