CloudFlareのNGINX HTTP/2 + SPDY両対応するパッチを試す

CloudFlareから、「Open sourcing our NGINX HTTP/2 + SPDY code」という記事にて、NginxをHTTP2とSPDYに両方に対応するパッチが公開されました。


NginxはHTTP2対応に伴い、SPDYのコードは削除されました。しかし、一部古いブラウザはSPDYまでしか対応してないものもあります。そういったブラウザのためにSPDYをサポートするのは少なからず効果があるのだと思われます。


設定の仕方や、ビルドに必要な物はSPDY対応していた頃と同等のようなのでパッチさえ当てれば特に特殊なことはなさそうでした。

ビルドする

Nginx 1.9.7 とパッチをダウンロードしてビルドする。

wget http://nginx.org/download/nginx-1.9.7.tar.gz
tar zxvf ./nginx-1.9.7.tar.gz
cd ./nginx-1.9.7/

wget https://raw.githubusercontent.com/cloudflare/sslconfig/master/patches/nginx__http2_spdy.patch
patch -p1 < ../nginx__http2_spdy.patch


#必要があれば --with-opensslでopenssl-1.0.2 を追加する
./configure --with-http_spdy_module --with-http_v2_module --with-http_ssl_module
make

conf

server {
    listen       443 spdy http2 ssl;
    server_name  localhost;

    ssl_certificate      server.crt;
    ssl_certificate_key  server.key;
...

試す

http2

vagrant@vagrant:~$ nghttp https://localhost -nv
[ERROR] Could not connect to the address ::1
Trying next address 127.0.0.1
[  0.005] Connected
[  0.012][NPN] server offers:
          * h2
          * spdy/3.1
          * http/1.1
The negotiated protocol: h2

...


spdy

vagrant@vagrant:~/spdylay$ ./src/spdycat https://localhost -nv
[  0.009] NPN select next protocol: the remote server offers:
          * h2
          * spdy/3.1
          * http/1.1
          NPN selected the protocol: spdy/3.1
[  0.022] Handshake complete
[  0.022] recv SETTINGS frame <version=3, flags=1, length=20>
          (niv=2)
          [4(0):100]
          [7(0):2147483647]

...