EC2, ALB, Django, Apacheでhttp2.0のエラーを解決

問題

https化した自分のサイトにPC(クロム)からはアクセスできるが、スマフォ(iOSクロム)からはアクセスできない

解決方法

Apacheの設定ファイルの以下の箇所をコメントアウト

#<IfModule mod_http2.c>
#    Protocols h2 h2c http/1.1
#</IfModule>

これはhttp2を無効にするということになる??
ログを確認するとhttp2でアクセスしてもログには1.1と出ていた

問題が起きた環境

https://hid3.net/archives/1934
こちらの記事のようにEC2インスタンス, Apache, Djangoの環境を作っており、
そしてそのインスタンスを2つ用意し、ELB(ALB)で振り分けを行うようにし、さらにALBにドメインを設定しアクセスできるようにしていた。

さらに、Certificate Managerで証明書を発行しhttpsでALBにアクセスできるようにした。

PCからはアクセスできるが、スマフォからはアクセスできなかった

アクセスログを見るとPCからはhttp/1.1、スマフォからはhttp/2.0だったのでそこが問題だったのかと思う。

curlでアクセスすると以下の様なエラーが出ていた

* http2 error: Invalid HTTP header field was received: frame type: 1, stream: 1, name: [upgrade], value: [h2,h2c]
* HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR (err 1)
* Closing connection 0
Web開発
スポンサーリンク
hid3をフォローする
踊りながらWebサービスを個人開発している人のブログ