【AWS】ELB(HTTPS)を使うとSafariからのアクセスに失敗する場合の対処
目次
前提・やりたいこと
EC2上にApacheを入れてインストールしたWordPressをACMとELBでHTTPS化しました。
すると、なぜかiPhoneのSafariでは2〜3回に1回はアクセスに失敗するようになりました。なにやらプロトコルエラーが出ている。
ググったところ、ELBを使ってHTTPS通信するとSafariでのみうまく通信できないことがあるようで。
【参考】 HTTPS doesn’t work with Safari
解決策としては以下の二つありますが、結局は後者を選びました。前者はお手軽で良かったんですけど、サイトの表示が体感で分かるくらい遅くなってしまったのでやめました。
- ロードバランサーの「HTTP/2」を無効にする
- Apacheの設定ファイルを変更する
解決策:ロードバランサーの「HTTP/2」を無効にする
ものすごく簡単にSafariでアクセスできない問題が解決するので、急場しのぎに。
サイトの表示は遅くなります。画像をたくさん使っている場合、本当に遅くなります。5秒以上待たされることってここ最近なかったのでこれはありえないな、と思いました。
一応、手順のメモです。
- EC2ダッシュボード「ロードバランサー」から作成済みロードバランサーを選択
- 「属性の編集」を押下
- 「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からアクセスして何回リロードしてもエラーになることなく、通信速度も元通り。
ロードバランサーで無効にしていた場合はまた有効化にチェックつけるのを忘れないようにしたいですね。

ディスカッション
コメント一覧
まだ、コメントがありません