Overview
Apache で HTTP/2 を有効化します。
前提条件
設定の有効化
HTTP/2 を有効化します。
myadmin@ubuntu:~$ sudo a2enmod http2
設定を有効化します。
myadmin@ubuntu:~$ sudo systemctl restart apache2.service && systemctl status apache2.service
/etc/apache2/mods-enabled/http2.conf
a2enmod http2
を実行すると、以下のファイルのシンボリックリンクが生成されます。このファイル内には Protocols h2 h2c http/1.1 と記述されており、これによりグローバルで HTTP/2 が有効になります。具体的には h2 が HTTP/2 を示します。h2c は http における HTTP/2 です。h2c の必要性は実質的にほぼないのですが、特に困ることもないのでデフォルト値を採用しています。最後にどれにも該当しない場合は http/1.1 が使用されます。
myadmin@ubuntu:~$ cat /etc/apache2/mods-enabled/http2.conf
# mod_http2 doesn't work with mpm_prefork
<IfModule !mpm_prefork>
Protocols h2 h2c http/1.1
# # HTTP/2 push configuration
#
# H2Push on
#
# # Default Priority Rule
#
# H2PushPriority * After 16
#
# # More complex ruleset:
#
# H2PushPriority * after
# H2PushPriority text/css before
# H2PushPriority image/jpeg after 32
# H2PushPriority image/png after 32
# H2PushPriority application/javascript interleaved
#
# # Configure some stylesheet and script to be pushed by the webserver
#
# <FilesMatch "\.html$">
# Header add Link "</style.css>; rel=preload; as=style"
# Header add Link "</script.js>; rel=preload; as=script"
# </FilesMatch>
# Since mod_http2 doesn't support the mod_logio module (which provide the %O format),
# you may want to change your LogFormat directive as follow:
#
# LogFormat "%v:%p %h %l %u %t \"%r\" %>s %B \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
# LogFormat "%h %l %u %t \"%r\" %>s %B \"%{Referer}i\" \"%{User-Agent}i\"" combined
# LogFormat "%h %l %u %t \"%r\" %>s %B" common
</IfModule>
正常性確認
curl でも簡易的な確認が可能ですが、Chrome のデベロッパーツールで確認するのが確実だと思います。未確認事項として、WordPress などのリッチな画面を返す場合は HTTP/2 での通信を確認することができますが、シンプルな Web ページでは HTTP/1.1 でしか通信されません。何らかの条件で切り替えていると思いますが、今後の課題とします。
Ubuntu 22.04 Apache Web サーバー構築 HTTP/2 有効化