以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

何気にownCloudをHTTP/2に対応しました(ブラウザからのみ)

f:id:abyssluke:20151213175234p:plain:w200:leftnginx 1.9.5以降から標準でHTTP/2に対応している*1のでHTTPSなownCloudに対して対応してみた。さすがにownCloudクライアントはHTTP/2には対応していないけど。

バージョンは問題ないか?

Ubuntuの場合、PPAのstableレポジトリ(1.8.0)でnginxをインストールしている場合は(執筆時点で)1.9.7が配信されているdevelopmentレポジトリを追加してupdate→upgrade後stableレポジトリを削除する。

$ sudo add-apt-repository ppa:nginx/development
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo add-apt-repository -r ppa:nginx/stable
$ sudo apt-get update #←念の為

シンプル設定

nginxでの設定はlistenのオプションにhttp2を入れるだけというシンプルさ。

$ sudo vi /etc/nginx/sites-available/example
listen 443 ssl;
listen [::]:443 ssl;
#↓
listen 443 ssl http2;
listen [::]:443 ssl http2;

入れたあとはreloadするのをお忘れなく。

$ sudo nginx -s reload

確認

実際にHTTP/2で通信されているかどうかはHTTPログやブラウザのデベロッパツール(記事画像はFirefoxデベロッパツールで確認した時の様子)の他、ChromeであればHTTP/2 and SPDY indicatorを入れることで確認することが可能。アドレスバーの右側に青色の稲妻アイコンが出ていればHTTP/2で通信している。

(ゴニョゴニョ) - - [13/Dec/2015:16:59:10 +0900] "GET /index.php/apps/files/ HTTP/2.0" 200 17582 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36"

ちなみに

この記事を書く数日前にHTTP/2の対応設定を行ったのだが、当時設定後sudo nginx -s reloadしてワーカープロセスの再起動をしていなかった(先日の記事参照)ので「んーだめっぽい?」と思い込み、いろいろ調べてPPAで配信されているPHP5.6を入れたり(OpenSSLも配信されている)してもダメだったので放っておいた。が、先日reloadしたタイミングから?HTTP/2でつながるようになった模様。reloadでワーカープロセス再起動マジ大事。

*1:正確にはconfigure時に--with-http_v2_moduleが必要っぽい?