質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Elastic Load Balancing

Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。

Q&A

解決済

2回答

2577閲覧

AWS ELB 配下の httpd の挙動について

退会済みユーザー

退会済みユーザー

総合スコア0

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Elastic Load Balancing

Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。

1グッド

0クリップ

投稿2017/07/22 05:58

編集2017/07/22 05:59

AWS の ELB の背後に EC2 の Web サーバ(httpd は apache2)を配置しています。

クライアント <-> ELB は http もしくは https でのアクセス、ELB <-> EC2 (apache) は http で接続するようにしています(よくあるパターンだと思います)。

ここで質問なのですが、ドキュメントルートに hoge ディレクトリがあり、クライアント側から https://<elb>/hoge という URL でアクセスしたときと https://<elb>/hoge/ と最後に / を付けてアクセスした時で挙動が変わります。

https://<elb>/hoge の場合、EC2 上の apache2 はクライアントに 301 を返して http://<elb>/hoge/ へリダイレクトさせようとして、それ以降は http でのアクセスになってしまいます。

クライアント側で確実に最後に / を付けるようにという運用は難しいのですが、なにか解決方法は無いでしょうか?

yodel👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ELB が付けるヘッダ X-Forwarded-Port を使って Apache2 側でリダイレクトをかけるしか無いようです。

注意しなければならないのは、ヘルスチェックにリダイレクトを返却するとエラーになることとのこと。

RewriteEngine On

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

ELB への接続がポート番号 443(https)ではない場合、かつ、ヘルスチェックのアクセスではない場合、https にリダイレクトさせるということになります。

実際のところ、自分で「http://<elb>/hoge/」にアクセスしろと言っておいて、再度「https://<elb>/hoge/」にリダイレクトさせるって気持ち悪いですが。

投稿2017/07/25 23:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

クライアント <-> ELB は http もしくは https でのアクセス

どうしてもHTTP接続を維持したいという事情があるなら別ですが、HTTPで来たアクセスは即時でHTTPSにリダイレクトしてしまう、という実装のほうがHTTP/HTTPSの混在も起きませんし、おすすめです。

投稿2017/07/22 06:10

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/23 00:54 編集

ec2 (apache2) が elb 配下にあり、elb と ec2 は http で通信しています。 ec2 単独で elb を経由しないなら rewrite しちゃうのですが、この場合は ec2 は http で通信していますのでちょっとパターンが違うかなと思いました。 apache2 自身は http で通信しているけど、質問中のリダイレクトの返答を https で返したいという内容になります。わかりづらくてすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問