こんにちは、ちょっと間が空いてしまいました。まみたすです。
すっかり秋、、むしろ冬?になってきましたね。紅葉写真撮りに行きたい。
すごくどうでもいいんですけど、最近お香にはまっていて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 に以下のコードを記述。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
…
今回はサーバーにあるwordpressだけで良かったので、公式通り以下のようにしてみました。
/opt/bitnami/apps/AppName(今回はここが”wordpress”になります)/conf/httpd-prefix.conf
↑こんなファイルあるんだー!という感じでした。bitnamiのwordpress特有・・・?
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
どちらのコードも簡単にいえばhttpにきたらhttpsに書き換えてね!というコードですね。
結果
リダイレクトループします。動かなくなって焦ります。
ELBを噛ませている場合のリダイレクト
ELBのアクセスを判別し、ヘルスチェックではなくクライアントからのhttpアクセスであればhttpsへリダイレクト、
ELBのhttpアクセス(ヘルスチェック)であればリダイレクトをしない、という設定をいれてあげます。
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とかの大文字の部分はそのまま書いて大丈夫です。
自分のドメインに変えたりしなくても動きます。(どこで迷ってんの?とバカにされそう・・・)
そして忘れずに再起動です。
これで終わり。
簡単ですね!
AWS勉強始めました
上司に参考書譲ってもらいました。
これで2週間、あとはネットから帰る問題集をやって、勉強期間2週間で受かったそうです。
なので、私は1ヶ月必要そうです。
ちなみにネットにある問題集(有料)は何度やっても同じ問題で順番が違うだけだったと申しておりました。
頑張るぞお

まみたす

最新記事 by まみたす (全て見る)
- Let’ Encryptで証明書更新時に発生したpythonエラーとコネクションエラー - 2018年11月11日
- WordPressにInstagramのフィードを表示する - 2018年10月28日
- Wp-Xで独自ドメインを使用したwordpressサイトをたてる - 2018年4月18日
- 未経験文系からエンジニアになって、実際にやって来たこととやればよかったこと - 2018年4月14日
- Ruby on Railsの環境構築詰まったとこメモ - 2018年3月4日
まみたすさん、初めまして。
最近同じく?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番ポートの開放等何かの作業が足りていないのではと思いますが・・・
もしどうにもわからない!という状況だったら、またご連絡くださいませ。
猫可愛いですよね!
ありがとうございます!!!!
返信もらっている事に気づくのが遅れました。
改めて実行してみたのですが、ダメでした。
もう本当に分かりません。この件でかれこれ二週間以上悩んでます。
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
うーんお力になれずすみません…
意外と何か初歩的なところを見落としている可能性はありますよね。。。
また何かあればコメントください!
その説はありがとうございました。
最終的にはhttps化が出来ましたが、当初のELBを介した方法では実現出来ませんでした。
ELBおよびAWS上で発行した証明書を無視し、Let’s Encryptを使用する事で対応しました。
一応、何かを辿ってこちらに来られる方がいる可能性を考え、
残させて頂ければ幸いです。
(コメント承認制なのでご覧になってなければ意味がありませんが・・)
下記URLにザッと方法を掲載しました。誰かの助けになりますように。
https://teratail.com/questions/99857