Nginx で SPDY !

SPDY (スピーディー) は、Googleが提唱し、現在標準化作業が進められている通信プロトコルです。
HTTP の次期バージョン HTTP 2.0 のベースとなる技術の有力候補として SPDY が挙げられてたりもするので要注目ですね。
ブラウザが対応していないと恩恵に預かれませんが、Chrome や Firefox, Opera の最新版であれば問題なく利用できます。IE ? なにそれ?おいしいの?

Wikipedia から、抜粋して引用すると

SPDYは、Googleが提唱し、現在標準化作業が進められている通信プロトコルの一つ。2012年8月現在の最新バージョンはSPDY Protocol – Draft 3(一般には「SPDYv3」と称されることが多い)。

基本的には既存のHTTPを拡張しダウンロードの高速化を目指したプロトコルで、TLS接続の上にセッション層を追加し、単一のSPDYセッションで複数のリクエストを送受信することを可能にしている。それ以外にも以下のような機能がある。

サーバヒント
クライアント側がコンテンツをダウンロードする際に、サーバ側からコンテンツの展開に必要と思われる付属データを提案するもの[3]。
サーバプッシュ
サーバ側からクライアントに対しデータをプッシュ配信する機能。

プロトコル的にはTLSの拡張仕様の一つであるNext Protocol Negotiation(NPN)をベースにしているため、SPDYの使用にはHTTPSの通信が可能な環境であることが必須となる。

2012年現在は独立したプロトコルとして一部のWebブラウザやWebサーバで実装が進んでいるほか、IETFのドラフトも提出されており、標準化作業が進んでいる。さらにHTTPの新バージョンとして現在検討が進められている「HTTP 2.0」のベース技術の一つとしてSPDYが採用されるのではないかという観測もあり、Web技術者の間で注目を集めつつある。

サーバプッシュが可能という点で、類似するプロトコルであるWebSocketと比較されることも多い。

via. SPDY – Wikipedia

そんな SPDY を Nginx 1.3.x に対応させるためのパッチも提供されてます。
http://nginx.org/patches/spdy/README.txt
んっ? WordPress ユーザーには見慣れた会社名が書いてありますね。

This work has been sponsored by Automattic (http://automattic.com/).

さすが WordPress.com で Nginx を使い倒している Automattic さんや!

では、実際に CentOS 6 上の Nginx で SPDY を使う手順について解説します。

と言っても、README.txt 通りにやればいいだけなんですが。

Nginx のビルド

Install OpenSSL 1.0.1+

SPDY モジュールは Next Protocol Negotiation TLS extension を使用するため、OpenSSL のバージョン 1.0.1 以上を要求してきます。
CentOS 6 で提供されているパッケージでインストールされる OpenSSL は ver.1.0.0 ですので、この要求に応えることができません。

そこで IUS repos からインストールしましょう。
以下の手順でいけます。

$ sudo rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm
$ sudo rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/ius-release-1.0-10.ius.el6.noarch.rpm
$ sudo rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/yum-plugin-replace-0.2.5-1.ius.el6.noarch.rpm
$ sudo yum replace openssl --replace-with=openssl10 --enablerepo=ius-testing

via. tech.fawk.eu » Blog Archive » CentOS 6 + OpenSSL 1.0.1 = SHA256 support

Download nginx 1.3.x tar-gzip package, Unpack nginx-1.3

README.txt の通りですね。

$ wget http://nginx.org/download/nginx-1.3.11.tar.gz
$ tar xvfz nginx-1.3.11.tar.gz
$ cd nginx-1.3.11

Download and apply SPDY module patch

SPDY module パッチを適用します。Automattic 社の方向を拝んでから行いましょう。

$ wget http://nginx.org/patches/spdy/patch.spdy.txt
$ patch -p1 < patch.spdy.txt&#91;/text&#93;

<h3>Configure nginx build, Build Nginx</h3>
オプションつけて configure して、ビルドします。

[text]$ ./configure --with-http_ssl_module --with-http_spdy_module
$ make
$ sudo make install

Nginx の設定

nginx.conf の server{} ブロックを以下のように修正しましょう。
基本的には listen ディレクティブに ssl spdy を追加して、SSL の設定をすればおっけです。

オレオレ証明書を設定する方法は、以前書いてますね。
nginx で ssl 設定をする

server {
    listen 443 ssl spdy default_server;

    ssl on;
    ssl_certificate      /path/to/server.crt;
    ssl_certificate_key  /path/to/server.key;

    ssl_session_timeout 5m;

    ssl_protocols SSLv2 SSLv3 TLSv1;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    spdy_max_concurrent_streams 100;
    spdy_streams_index_size     32;
    spdy_recv_timeout           30s;
    spdy_keepalive_timeout      3m;
    spdy_headers_comp           9;

      ...
}

僕は RapidSSL を購入しました。1,365円/年とお手頃価格。個人でも十分手が出ますね。
30日間有効な、無料のお試し SSL 証明書も発行してくれるみたいっすよ。
RapidSSL 年903円から 携帯 再発行可 | ディファイン合同会社

確認方法

Firefox ですと、以下のアドオンを追加すると SPDY 接続されてるか確認できます。
SPDY indicator :: Add-ons for Firefox

このアドオンをインストールしていると、SPDY 接続されている場合右上に緑の稲妻がズバッと表示されます。

オレのブログが SPDY !
https://dogmap.jp/

おまけ

CentOS 6 (x86_64) 用の rpm パッケージを置いておきます。
http://dl.megumi-cloud.com/nginx-1.3.11-1.el6.ngx.x86_64.rpm

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください