在Nginx 1.13.10中配置HTTP/2 Push的技术咨询
测试Nginx HTTP/2 Push功能的配置与验证方案
首先,先把你提供的Nginx配置片段整理出来(方便后续参考):
server { listen 80 default_server; listen [::]:80 default_server; server_name 192.168.133.21; return 302 https://$server_name$request_uri; } # 加载默认服务器块的配置文件 server { listen 443 ssl http2; server_name 192.168.133.21; include conf.d/self-signed.conf; #ssl配置 ssl on; location / { root /var/www/wordpress; # 这里推测是你的WordPress根目录,补全便于后续配置 index index.php index.html index.htm; # 后续将在这里添加HTTP/2 Push相关配置 } }
接下来,咱们一步步配置和验证HTTP/2 Push功能:
一、确认Nginx版本支持
你的Nginx是1.13.10,这个版本已经原生支持HTTP/2 Push(官方从1.13.9版本开始正式引入http2_push指令),所以版本层面没有问题,不用额外编译模块。
二、添加HTTP/2 Push配置
针对WordPress站点,我们主要推送页面加载必需的核心静态资源(比如主题CSS、JS、WordPress自带的基础静态文件),有两种实用配置方式:
方式1:直接用http2_push指定推送资源
在location /块里添加具体的资源路径,适合固定的核心资源:
location / { root /var/www/wordpress; index index.php index.html index.htm; # 推送WordPress主题的核心样式和脚本(替换成你实际的主题目录名) http2_push /wp-content/themes/your-theme/style.css; http2_push /wp-content/themes/your-theme/js/main.js; # 可以继续添加jQuery这类全局依赖资源 }
方式2:通过Link头自动推送(更灵活,适配动态内容)
如果你的WordPress主题或插件会在页面输出Link预加载头,可以开启Nginx的自动推送功能:
server { listen 443 ssl http2; server_name 192.168.133.21; include conf.d/self-signed.conf; ssl on; # 开启自动解析Link头,推送标记为preload的资源 http2_push_preload on; location / { root /var/www/wordpress; index index.php index.html index.htm; } # 补充WordPress必需的PHP请求处理配置(根据你的PHP版本调整socket路径) location ~ \.php$ { fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
这种方式下,只要页面输出类似<link rel="preload" href="/wp-content/themes/your-theme/style.css" as="style">的标签,或者响应头里有Link: </wp-content/themes/your-theme/style.css>; rel=preload; as=style,Nginx就会自动推送对应资源。
三、验证HTTP/2 Push是否生效
配置完成后,先重启Nginx让配置生效:
sudo systemctl restart nginx
然后用两种方法验证:
方法1:Chrome开发者工具直观验证
- 打开Chrome访问你的站点
https://192.168.133.21(自签名证书会提示不安全,测试环境忽略即可) - 按F12打开开发者工具,切换到
Network标签 - 刷新页面,找到你推送的资源(比如
style.css),查看Initiator列,如果显示Push,说明推送成功。
方法2:用curl命令命令行验证
# 查看响应头是否包含推送相关标记 curl -I --http2 https://192.168.133.21 # 查看具体的推送承诺信息 curl --http2 -v https://192.168.133.21 2>&1 | grep "PUSH_PROMISE"
如果输出里包含你配置的资源路径,说明HTTP/2 Push已经正常工作。
额外注意事项
- 不要过度推送资源,只推送页面首屏必需的核心文件,过多推送反而会浪费带宽拖慢加载速度
- 自签名证书在测试环境没问题,但生产环境一定要用可信CA颁发的证书
- 如果WordPress启用了缓存插件,要确保缓存页面也包含正确的
preload标签或Link头(针对方式2)
内容的提问来源于stack exchange,提问作者D. Y.
相关产品推荐
相关产品推荐

