その他
    ホーム 技術発信 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
    

    参考

    記事を共有