当使用HTTP / 2时,Nginx不能显示许多静态图像

我的一个WordPress站点有很多静态图片(每页至less有20个),启用HTTP / 2后,下面的图片开始显示为断开(如同死链接的图片一样)。 error.log文件中没有显示任何错误,但Chrome 53在控制台中这样说:

Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR 

我试图与client_max_body_size混乱,但那是没有运气。

编辑:这是我的nginx.conf:

 load_module /usr/local/libexec/nginx/ngx_mail_module.so; load_module /usr/local/libexec/nginx/ngx_stream_module.so; user www; worker_processes 4; error_log /var/log/nginx/error.log info; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; client_body_buffer_size 10K; client_header_buffer_size 1k; client_max_body_size 0; large_client_header_buffers 2 1k; client_body_timeout 12; send_timeout 10; #keepalive_timeout 0; keepalive_timeout 65; gzip off; charset UTF-8; server { listen 80; server_name manuth.life www.manuth.life; server_tokens off; return 301 https://$server_name$request_uri; #redirects to HTTPS root /usr/local/www/nginx/manuth.life; index index.php index.html index.htm; access_log /var/log/nginx/manuth.life.access.log; error_log /var/log/nginx/manuth.life.error.log; error_page 500 502 503 504 /50x.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } } server { listen 443 ssl http2; server_name manuth.life www.manuth.life; server_tokens off; root /usr/local/www/nginx/manuth.life; index index.php index.html index.htm; access_log /var/log/nginx/manuth.life.access.log; error_log /var/log/nginx/manuth.life.error.log; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } # strict SSL settings ssl_certificate /usr/local/etc/letsencrypt/live/manuth.life/fullchain.pem; ssl_certificate_key /usr/local/etc/letsencrypt/live/manuth.life/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; # ssl_session_cache builtin:1000 shared:SSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /usr/local/etc/ssl/dhparam.pem; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 10s; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } } 

}

你得到SPDY错误,这是HTTP2的前身。 HTTP2默认没有内置到Nginx中,你必须自己构buildNginx( 文档链接说明了这个 , 构build的教程链接 )。 构buildNginx非常简单。 有些发行版可能会构buildhttp / 2。

一旦你获得了内置HTTP / 2支持的Nginx,当人们已经保存了,你需要在你的listen命令中joinhttp2指令。

 listen 443 ssl http2; 

如果这不起作用,您需要发布完整,准确的configuration,以及一个链接到不正常工作的网站。 我们无法诊断我们看不到的东西。

这似乎是与Chrome 53的一个问题。我正在使用Chrome 54,我不再看到这个问题。 事实上,速度就是飞逝! (在本地networking上,就是这样)