【AWS】ELB(HTTPS)を使うとSafariからのアクセスに失敗する場合の対処

2020-02-01ELBApache,AWS,ELB,HTTP/2,Safari,SSL

前提・やりたいこと

EC2上にApacheを入れてインストールしたWordPressをACMとELBでHTTPS化しました。

すると、なぜかiPhoneのSafariでは2〜3回に1回はアクセスに失敗するようになりました。なにやらプロトコルエラーが出ている。

ググったところ、ELBを使ってHTTPS通信するとSafariでのみうまく通信できないことがあるようで。

【参考】 HTTPS doesn’t work with Safari

解決策としては以下の二つありますが、結局は後者を選びました。前者はお手軽で良かったんですけど、サイトの表示が体感で分かるくらい遅くなってしまったのでやめました。

  1. ロードバランサーの「HTTP/2」を無効にする
  2. Apacheの設定ファイルを変更する

解決策:ロードバランサーの「HTTP/2」を無効にする

ものすごく簡単にSafariでアクセスできない問題が解決するので、急場しのぎに。

サイトの表示は遅くなります。画像をたくさん使っている場合、本当に遅くなります。5秒以上待たされることってここ最近なかったのでこれはありえないな、と思いました。

一応、手順のメモです。

  1. EC2ダッシュボード「ロードバランサー」から作成済みロードバランサーを選択
  2. 「属性の編集」を押下
  3. 「HTTP/2」のチェックを外し、「保存」を押下
有効になっているので「属性の編集」で変更していく
有効になっているので「属性の編集」で変更していく
「HTTP/2」のチェックを外し、「保存」を押下
「HTTP/2」のチェックを外し、「保存」を押下

解決策:Apacheの設定ファイルを変更する

SSHでEC2にログイン

ssh -i <キーファイル> ec2-user@<EC2のIPアドレス>

httpd.confを修正

Vimかnanoエディタでhttpd.confを開きます。

sudo nano /etc/httpd/conf/httpd.conf

ファイル末尾に以下の行を追加して保存します

Header unset Upgrade
こんな感じ
こんな感じ

Apacheを再起動して読み込み

sudo systemctl restart httpd.service

以上です。これでiPhoneからアクセスして何回リロードしてもエラーになることなく、通信速度も元通り。

ロードバランサーで無効にしていた場合はまた有効化にチェックつけるのを忘れないようにしたいですね。

2020-02-01ELBApache,AWS,ELB,HTTP/2,Safari,SSL

Posted by ケイ