share facebook facebook twitter menu hatena pocket slack

ELB経由apacheでhttp or httpsの判定(RewriteCond)

櫛田 草平

WRITTEN BY 櫛田 草平

ある特定のページのみhttpをhttpsにするという、よくある作業があったのですが、
ELBにSSL証明書を入れており、ELB(ポート番号:443)→EC2(ポート番号:80)という設定のため、
EC2上では80で来るので、このような場合はいつもアプリ側でヘッダーを確認し切り分けていたのですが、
ApacheレベルのRewriteCondで対応できないものかと思い試してみました。

※httpでリクエストされた/adminはhttpsに飛ばします。

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^/admin https://%{HTTP_HOST}/admin/

上記を設定したところ、下記にリダイレクトされることを確認します。

http://hoge.jp/admin/ → https://hoge.jp/admin/

/admin配下のものはすべて同じページに飛ばすには下記のようにします。

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^/admin/(.*)$ https://%{HTTP_HOST}/admin/$1

上記の設定後、下記のように元のURLでhttpsになるので便利です。

http://hoge.jp/admin/hoge.html → https://hoge.jp/admin/hoge.html

逆にする場合は、下記のようにします。

RewriteCond %{HTTP:X-Forwarded-Proto} =https

こちらの記事はなかの人(kenjionsoku)監修のもと掲載しています。
元記事は、こちら

櫛田 草平

櫛田 草平

cloudpackで運用、保守、構築、夜間対応を担当しており、日々様々な課題に対応していますのでこの経験を記事にしていけたらと思います。 櫛田 草平

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。