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] ...