LoginSignup
2
2

More than 5 years have passed since last update.

NginxでHTTP/2を有効にしたのにHTTP/1.1が使われている場合

Last updated at Posted at 2018-11-12

NginxでHTTP/2を有効にするのは設定一発で本当に簡単だ。一方でNginxを有効にしているのにHTTP/1.1がログに出ることがある。ググった所触れられているサイトがなかったので記録として残す。

NginxでHTTP/2を有効にする方法

なぜHTTP/2にするかはここでは触れない。Googleのサイト監査ツールLighthouseでHTTP/2を使えと推奨されたりする。Nginx1.9.5以降では設定するだけでHTTP/2を使えるようになる。

Nginx設定

https://dassur.ma/things/h2setup/ にある通り。listen 443の行にhttp2を足して再起動するだけ。

server {
    listen 443 ssl http2 default_server;
    ssl_certificate    /path/to/server.cert;
    ssl_certificate_key /path/to/server.key;
    # ...
    # Copy from the HTTP server
    # ...
}

HTTP/1.1が残る現象

Lighthouseで再検証する...と例えばこんなログが出てHTTP/1.1が残ってるじゃねーか!と指摘される。

Lighthouse_Report-3.png

何が起きているか

Chromeのdeveloper modeでログを眺めると304Not Modified http/1.1となっている。304Not Modifiedは例えばjpgにキャッシュ期間を設定している場合に「更新なし」だよというレスポンスでブラウザはローカルキャッシュを使用する。このstatusが定義されているRFCがHTTP/1.1なのでHTTP/2ではないログが出てしまう(が問題ない)。

304 Not Modified - HTTP | MDN https://developer.mozilla.org/ja/docs/Web/HTTP/Status/304

imglog.png

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2