半年前くらいまで
nginxをHTTP/2対応にする方法(Chrome 51以降でも有効にする)
で、ソースから最新版をビルドしないといけなかったんだけど、最近のディストリビューションならもう新しいバージョンが入っているので、http2と一言かけば有効になってしまう。
バージョンの確認
$ nginx -V
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
という具合に、nginx/1.12.2 & OpenSSL 1.0.2になっていればOK。
あと、HTTP/2はSSLが前提なので、すでにHTTPSで通信できる設定になっていることが前提です。
対応させる
nginxの設定ファイルの
listen 443 ssl;
これを
listen 443 ssl http2;
こうするだけ。
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl restart nginx.service
テストして問題なければ再起動。
ブラウザで確認
ChromeでDeveloperTool - Networkを見る
ヘッダのところを右クリックして"protocol"にチェックを入れる
リロードして、protocolのところがh2になっていることを確認。
HTTP/2の能力を活かすためには、webpackで固めていたJSをバラバラにするとかこまかい改善が必要なんだけど、とりあえずnginxサーバとしてはこれだけでOK。