Help us understand the problem. What is going on with this article?

ubuntu16.04で動作しているapacheサーバーをhttp2に変更して爆速化

昔firefoxのTIPSみたいなサイトを開くとfirefox高速化としてabout:configでpipelineをサーバー負荷を顧みずにいっぱいたてろ的な記事が決まってあった。
今はそれがそのような裏技を使わなくても標準である。それがhttp2らしい。
入れるとhttp のheaderのhttp1.1というレスポンスがhttp2に変わって早くなる。
中身はpipelineをいっぱいにすることで実現してるらしいです。

で、この記事では、実作業として、ubuntu16.04で動作しているHTTP(apache)サーバーがあるのですが、それをhttp1.1から2に変えた。そのログを書きます。

まずhttp2が動作してるかどうかの確認方法ですが
firefoxだと
https://addons.mozilla.org/ja/firefox/addon/http2-indicator/
でできます。
動作してるHPだとURLのお尻に青い稲妻が出ます。
一応真面目な確認方法も書きます。
開発ツールー>インスペクターー>ネットワークで出るリストを右クリックでカラムにプロトコルを追加
ただhttp2の確認はhttps://でないとFirefox,chromeで確認できない。
http://wiki.bit-hive.com/tomizoo/pg/Apache%E3%81%A7%E3%81%AEHTTP%2F2%E8%A8%AD%E5%AE%9A
http://で確認したいというマニアックな場合(たとえば19.168.??.??で試しにやったとか)
curlでできる。
curl -v --http2 http://www.google.com
とかする。
出力を載せておく
$ curl -v --http2 http://192.168.1.7
* Rebuilt URL to: http://192.168.1.7/
* Trying 192.168.1.7...
* TCP_NODELAY set
* Connected to 192.168.1.7 (192.168.1.7) port 80 (#0)

GET / HTTP/1.1
Host: 192.168.1.7
User-Agent: curl/7.58.0
Accept: /
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA

< HTTP/1.1 101 Switching Protocols
< Upgrade: h2c
< Connection: Upgrade
* Received 101
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
< HTTP/2 200
< date: Sun, 00 Jan 1900 00:00:00 GMT
< server: Apache/2.4.37 (Ubuntu)
< expires: Thu, 19 Nov 1981 08:52:00 GMT
< cache-control: no-store, no-cache, must-revalidate
< pragma: no-cache
< set-cookie: PHPSESSID=egcn0u7lg1bomhc80vuf36gv44; expires=Mon, 03-Dec-2018 08:44:35 GMT; Max-Age=86400; path=/
< set-cookie: pageredir=http%3A%2F%2F192.168.1.7%2F; expires=Sun, 02-Dec-2018 10:44:35 GMT; Max-Age=7200; path=/
< vary: Accept-Encoding
< content-type: text/html; charset=UTF-8

ただ16.04のaptのcurlでこれをすると、
curl: (1) Unsupported protocol
になる。
これを回避するにはCURLのアップデートを行う。
https://askubuntu.com/questions/884899/how-do-i-install-curl-with-http2-support
なおcurlがhttpsをサポートするかは
curl -V
の出力でも確認可能(出力にhttpsがでる)
$ curl -V
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.0.2g zlib/1.2.8 nghttp2/1.7.1 librtmp/2.3
Release-Date: 2018-01-24
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy
こんな感じ。

最後になったが
セットアップの仕方はこの通り
https://techwombat.com/enable-http2-apache-ubuntu-16-04/

ただVirtualHost の書き方だけ曖昧なので再記述
ファイルは
/etc/apache2/sites-enabled/????-le-ssl.conf
でOKだと思うが私は念のためすべてに記述した。

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName ほげ
        DocumentRoot ほげほげ
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile ほげ
SSLCertificateKeyFile ほげ
Protocols h2 h2c http/1.1
</VirtualHost>
</IfModule>

こんな感じ
このh2がhttp2らしい。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away