前提
以下の記事のように、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