Chrome 51.0.2704.84没有请求HTTP / 2.0,但Safari是Firefox

时间:2016-06-09 05:21:25

标签: google-chrome firefox nginx safari http2

我已经将我的nginx用于http2服务

    worker_processes 2;
    events {
        worker_connections 1024;
        multi_accept on;
        use epoll;
    }

http {
    sendfile on;

    server {
        listen 80;
        location / {
            return 301 https://$host$request_uri;
        }
    }

    server {
        listen 443 ssl http2;

        ssl_certificate     /usr/cer/server.cer;
        ssl_certificate_key /usr/cer/server.key;

        location / {
            root   /usr/share/nginx/html;
            index  index.html;
        }
    }
}

并带有日志消息

  • Chrome 51.0.2704.84
  • Safari 9.1.1
  • Firefox 47.0

1 个答案:

答案 0 :(得分:0)

原因:

  

为了解决这个问题,Google开发了一个名为SPDY的新传输层。通过SSL / TLS访问SPDY,Google开发了一种名为Next Protocol Negotiation(NPN)的SSL / TLS修改,允许客户端将其SSL / TLS连接从HTTP / 1升级到HTTP / 2。主要的Web服务器(如NGINX)实现了SPDY; OpenSSL和其他SSL / TLS堆栈实现了NPN。

溶液

  

从源代码重新编译NGINX并使用OpenSSL 1.0.2的私有构建