nginx

nginxをHTTP/2対応にする方法(ソースビルド不要)

半年前くらいまで
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"にチェックを入れる

品川駅付近の電源マップ_-_モバイラーズオアシス.png

リロードして、protocolのところがh2になっていることを確認。

Screen Shot 2018-01-29 at 21.10.14.png

HTTP/2の能力を活かすためには、webpackで固めていたJSをバラバラにするとかこまかい改善が必要なんだけど、とりあえずnginxサーバとしてはこれだけでOK。