O Nginx não pode mostrar muitas imagens estáticas ao usar HTTP / 2

3

Um dos meus sites WordPress tem muitas imagens estáticas (pense pelo menos 20 por página) e depois que eu habilito HTTP / 2, as imagens na parte inferior começam a aparecer como quebradas (riscadas, como nas imagens com mortos links). Nada de errado aparece no arquivo error.log, mas o Chrome 53 diz isso no console:

Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR

Eu tentei brincar com client_max_body_size , mas isso não teve sorte.

edit: este é o meu 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;
        }

    }

}

    
por Manuth Chek 06.10.2016 / 11:07

2 respostas

1

Isso parece ser um problema com o Chrome 53. Estou usando o Chrome 54 e não vejo mais esse problema. Na verdade, a velocidade apenas voa! (na rede local, isto é)

    
por 14.10.2016 / 14:40
0

Você está recebendo erros de SPDY, que é um predecessor do HTTP2. O HTTP2 não está embutido no Nginx por padrão, você tem que criar o Nginx você mesmo ( link da documentação que diz isso , link tutorial para a compilação ). Construir o Nginx é bem fácil. Algumas distribuições podem construir http / 2 in.

Uma vez que você tenha embutido o Nginx com suporte a HTTP / 2, como as pessoas salvaram, você precisa adicionar a diretiva http2 ao seu comando listen.

listen 443 ssl http2;

Se isso não funcionar, você precisará postar sua configuração completa e precisa, além de um link para o site que não está funcionando corretamente. Não podemos diagnosticar o que não podemos ver.

    
por 07.10.2016 / 21:33

Tags