ウェブサービスを作っています。

Heroku だと request.ip で IP アドレスの取得ができない

Heroku というか Amazon EBS の問題のようですが、

get '/' do
  "IP: #{ request.ip }"
end

のような簡単なアプリを Heroku にアップして実行すると IP: 10.x.x.x のような結果が返ってきてしまいます。


環境変数 HTTP_X_REAL_IP を参照すれば、正しい IP アドレスの取得が可能です。

get '/' do
  ip = env['HTTP_X_REAL_IP'] || request.ip
  "IP: #{ ip }"
end


ただし SSL が有効な場合、駄目かもしれません。
参考: Getting the client IP address through heroku/rack?