无法实现服务器推送

无法实现服务器推送

我可以在 Docker 容器内的 Nginx 服务器上实现 HTTP/2。但是,我无法执行服务器推送。

这些是我编写的配置文件。/etc/nginx/sites-available/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;  
  }  
}  

开发人员工具快照

开发人员工具未在 jpg 文件的启动器列中显示 Push。错误日志中未显示任何错误。有人能指出我哪里出错了吗?

答案1

http2_push指令后面跟着一个 URI 路径,但看起来您已经在文件系统上列出了绝对路径。

代替:

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

使用

http2_push /YNWA.jpg; 

答案2

根据这个配置名称,我猜您正在使用自签名证书?

include snippets/self-signed.conf;

如果自签名证书不受浏览器信任(所以你会看到一个红色挂锁,可能是你点击过的?),那么不会使用缓存由 Chrome 提供。这包括 HTTP/2 Push 工作所需的 Push Cache

接受自签名证书到您的信任库,这样您就会得到一个绿色挂锁,它就可以工作了。

这是对 HBruijn 关于语法使用错误的正确评论的补充。

相关内容