AWSのELB+ Apache環境(bitnami)でhttp->httpsへリダイレクトする

こんにちは、ちょっと間が空いてしまいました。まみたすです。

すっかり秋、、むしろ冬?になってきましたね。紅葉写真撮りに行きたい。

すごくどうでもいいんですけど、最近お香にはまっていてhibiの10 minitsアロマが最高です。

1箱600円くらいで東京駅のKitteの中にあるお店に売ってるんですけど、めっちゃいい感じ。
アロマにはまり、猫カフェにはまり、独身を極めている感じがすごい。

さて今日は基本(?)のリダイレクト処理です。

なんだかんだでリダイレクト処理って結構実装する機会が多い気がするのですが、毎回調べてしまうことの一つですね。

今回はAWSで、ELBを挟んだ時のリダイレクトについてです。Apacheです。
今回bitnamiを使用して構築した環境なのですが、これまたなんか日本語のドキュメントが少なくて、ちょっと時間かかりました。

 

Apache+ELBでhttpsリダイレクト

個人情報を含む情報を送信するページだったり、まあそうでなくても基本的にはhttpsが推奨される昨今なのでこの手の話はよくあると思います。

今回はbitnamiを使用して構築したApacheを使用したwordpress。
しかもELBを噛ませてアクセスを振り分けている環境での話になります。

余談ですがそもそもbitnamiってなんなんだって思ってたんですけど、調べたらソフトのようなものなんですね。知らなかった。
nginxとかlinuxと同じでサーバーの一種かと思ってました。勉強不足だ〜

 

まずはよくある方法で

bitnamiの公式リファレンスをみてみます。

サーバーにある全てのアプリケーションに対してリダイレクトをかけるときは以下のように書きます。
/opt/bitnami/apache2/conf/bitnami/bitnami.conf に以下のコードを記述。

DocumentRoot “/opt/bitnami/apache2/htdocs”
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

今回はサーバーにあるwordpressだけで良かったので、公式通り以下のようにしてみました。

/opt/bitnami/apps/AppName(今回はここが”wordpress”になります)/conf/httpd-prefix.conf
↑こんなファイルあるんだー!という感じでした。bitnamiのwordpress特有・・・?

 

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

どちらのコードも簡単にいえばhttpにきたらhttpsに書き換えてね!というコードですね。

 

 

結果

リダイレクトループします。動かなくなって焦ります。

 

 

ELBを噛ませている場合のリダイレクト

ELBのアクセスを判別し、ヘルスチェックではなくクライアントからのhttpアクセスであればhttpsへリダイレクト、
ELBのhttpアクセス(ヘルスチェック)であればリダイレクトをしない、という設定をいれてあげます。

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Port} !^443$
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{HTTP:X-FORWARDED-FOR} !^$
RewriteRule ^(.*)?$ https://%{HTTP_HOST}$1 [R=301,L]

私も未だに迷うので超初心者のために言っておくと、上記コードのREQUEST_URIとかの大文字の部分はそのまま書いて大丈夫です。
自分のドメインに変えたりしなくても動きます。(どこで迷ってんの?とバカにされそう・・・)

そして忘れずに再起動です。

sudo apachectl restart

これで終わり。
簡単ですね!

 

 

 

AWS勉強始めました

上司に参考書譲ってもらいました。
これで2週間、あとはネットから帰る問題集をやって、勉強期間2週間で受かったそうです。
なので、私は1ヶ月必要そうです。
ちなみにネットにある問題集(有料)は何度やっても同じ問題で順番が違うだけだったと申しておりました。

頑張るぞお

The following two tabs change content below.
まみたす

まみたす

1992年生まれ。知識ゼロ文系女子からSEになっているところ。 カメラ、猫、お酒、旅行がすきです。
この記事の内容が役に立ったと思ったら、SNSで記事を共有してもらえると幸いです。

4 thoughts on “AWSのELB+ Apache環境(bitnami)でhttp->httpsへリダイレクトする”

  1. まみたすさん、初めまして。

    最近同じく?AWSを利用し、bitnamiのWordpressを使用しています。
    ネットワークもホームページ作成も初心者なので、悪戦苦闘しています。。

    今httpのページをhttpsへ変更したいのですが、色んな事例を試しても全くうまくいかず。
    あちこち検索したところこちらに辿り着きました。
    割とbitnamiでの事例って少ない印象でして・・。

    早速ですが、質問です!

     ①追記する記述の場所
      ファイルの先頭に記述されてますか?
      それとも最終行に追記されてますか?

     ②ssl証明書
      こちらはどうされましたか?
      私はLet’s Encryptを利用して取得したのですが、
      その他作業(apacheとの連携)がうまくいかず、頓挫中です。

    以上の点、教えて頂ける非常に非常に助かります。。
    どうか宜しくお願い致します。。

    あと、全然関係ないですが、私も猫好きです。

    • オハさま

      初めまして、お返事遅れてすみません!
      もう解決したかもしれませんが、回答いたしますね。

      1.追記する場所
      /opt/bitnami/apps/wordpress/conf/httpd-prefix.confの
      一番上に追記しています。
      他にリライトするような記述を入れていないので私はこれで大丈夫でしたが、確かRewriteを入れるときは入れる場所によりマッチするものが違うのでちょっと注意した方が良かったかと!

      2.ssl証明書
      こちらはもともとドメインに紐づくものを別のところから取得して入れていたので、今回特別何かしたということはないですね・・・
      どんな作業でどんなエラーになりますか?
      wordpressを入れているサーバーの443番ポートの開放等何かの作業が足りていないのではと思いますが・・・

      もしどうにもわからない!という状況だったら、またご連絡くださいませ。
      猫可愛いですよね!

  2. ありがとうございます!!!!
    返信もらっている事に気づくのが遅れました。
    改めて実行してみたのですが、ダメでした。
    もう本当に分かりません。この件でかれこれ二週間以上悩んでます。
    1日で終わると思ってたんですが・・。

    1.追記する場所
     一番上に追記してapache再起動してみましたが、ダメでした~。
     httpsでアクセスしようとすると例外扱いのエラーになっちゃいます。

    2.ssl証明書
     インバウンドは80、22、443と全て開放してます。
     証明書ですが、元々AWS上でのACMを利用してELB経由にしているんですが、何故かうまくいきません。
     

    別の方法をググッてもbitnamiでは使えない方法ばかりしかヒットせず、
    一から作り直すしかないのかな・・って途方に暮れております。
    一から作り直してデータ移行しようと思うのですが、データ移行方法も分からないっていう・・。

    そもそもELBに関しては何故かヘルスチェックの時点でエラーになるんです。
    これも原因がまったく分かりません。
    /opt/bitnami/apache2/htdocs 内のファイルを適当に指定すれば良いかと思っていたのですが。

    恐らくほぼほぼ、まみたすさんの環境と同様だと思っているのですが、
    微妙に違うんでしょうか?
    自分の環境は下記リンク先の投稿をご参照ください。。

     https://teratail.com/questions/99857?nli=5a090993-6090-4546-8c78-0e770a000064

    どんな事でもイイので、気になる事があれば教えてください。
    すぐに試してみます。宜しくお願いします。_(;_;)_

    • コメントありがとうございます。
      苦戦してますね…

      まず、リンク先の投稿に.htaccessに記述したものは削除済みでしょうか?
      https://norm-nois.com/blog/archives/3017

      自分の環境のファイルを見直してみたところ、

      /apps/wordpress/htdocs/.htaccess一番上

      RewriteEngine On
      RewriteCond %{HTTP:X-Forwarded-Proto} =http
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

      を記述、それに加えてこの記事のように/opt/bitnami/apps/wordpress/conf/httpd-prefix.confにELBを許す記述を入れる。
      という感じです。

      証明書類の設定はほとんど同じかなと思います。
      そもそもELBがうまくいっていないというところですが…InServiceになっていないということでしょうか?
      参考記事としてはこの辺が近いかな…?と思いましたが…どうでしょう?
      https://norm-nois.com/blog/archives/3017
      https://teratail.com/questions/89386

      EC2の再起動をしたときにELBに再登録していないとかいう可能性はありますでしょうか?
      https://qiita.com/iron-breaker/items/54bf469a4c17d4350f3b

      うーんお力になれずすみません…
      意外と何か初歩的なところを見落としている可能性はありますよね。。。
      また何かあればコメントください!

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)