nginxのHTTP/2サポート開始とSPDYサポート停止
nginxは1.9.5からHTTP/2をサポートするようになりましたが、一方で同時にSPDY/3.1のサポートを打ち切っています。以下はnginx-1.9.5のChangeLogの抜粋です。(nginxの変更履歴はこちら)
*) Feature: the ngx_http_v2_module (replaces ngx_http_spdy_module).
Thanks to Dropbox and Automattic for sponsoring this work.
1.9.4までは--with-http_spdy_module
というオプションが用意されていましたが、1.9.5以降ではこのオプションおよびSPDY/3.1の実装自体が削除されてかわりに--with-http_v2_module
というオプションとHTTP/2の実装が入りました。
ばっさり切られるとそれはそれで困るのですが、昨年のはじめの段階でSPDYの提唱元であったGoogleはすでにSPDYの将来的なサポートの停止を宣言するとともにHTTP/2への移行を促していましたし、これはある程度仕方がないことでしょう。
SPDYサポートの需要について
殊スマートフォンではHTTP/2のサポートはまだ十分ではない状況ですし、HTTP/2はしゃべれないけどSPDYはしゃべれるという端末(e.g. iOS8.x)は今後しばらく残るだろうと思われます。そのため将来的にはHTTP/2一本になっていくとしてもHTTP/2とSPDYの両方をサポートしたサーバの需要はまだそれなりにあるでしょう。
実際、CloudflareのようにHTTP/2とSPDYの両方をサポートしているCDNもあります。
TengineでHTTP/2とSPDYを両方ともサポートする
Tengineはnginxの有名なフォークです。モジュールの動的組み込みやアップストリームのヘルスチェックなど、nginx本家にはない機能が実装されてたりします。で、昨年末に新しいバージョン(2.1.2)がリリースされましたが、公式サイトの説明に下記の一文があります。
support for both HTTP v2 protocol and SPDY v3 protocol, be able to use them together.
どうやらTengineではHTTP/2とSPDY/3.1の両方が利用出来るようです。実際こんな感じでlisten
ディレクティブにspdy
とhttp2
両方のパラメータを渡すことができます。
listen 443 ssl spdy http2;
SPDYとHTTP/2両方サポートしたいなぁ、どうしようかなぁと考えてたのですが、さっとやるならTengineを利用するのが良さそうです。