ホーム DoRuby ELBでSSLオフロードしている場合のhttpアクセスをlocalhostで偽装する
ELBでSSLオフロードしている場合のhttpアクセスをlocalhostで偽装する
 

ELBでSSLオフロードしている場合のhttpアクセスをlocalhostで偽装する

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ELBでSSLオフロードする構成を組んでいる状態で配下のEC2インスタンス自身からlocalhostのhttpを叩きたい場合のTipsです。

前提

以下の記事のように、ELBでSSLオフロードして、配下のEC2インスタンスへは常にhttpでアクセスされる構成にしている。

http://qiita.com/snoguchi/items/f5ccb67592f87942480d

問題

ELB配下のEC2インスタンスにcurlでhttpアクセスしたいけど、nginxの設定でhttpでアクセスされたらhttpsにリダイレクトする設定してるため、自分自身のlocalhostに対してhttpのurlを叩けなくて困ったりする。

たとえば、railsのインスタンスが稼働しているか単純に確認したくてヘルスチェックを叩いてみたくても

$ curl http://localhost/healthcheck
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>

のようにリダイレクトされてしまう。

対処方法

ELBでSSLオフロード済みのhttpはヘッダに X-Forwarded-Proto: https がついてくるのでこれを明示的につけてあげれば良い。

$ curl -H "X-Forwarded-Proto: https" -v http://localhost/healthcheck

参考

記事を共有

最近人気な記事