curlでproxyを設定する

こんにちは!kossyです!



さて、今回はcurlでproxyを設定したくなるシチュエーションに出会ったので、
ブログに残してみたいと思います。



困った

Rails APIモードでAPIサーバーを開発しているときに、リクエスト元のIPアドレスを保存する要件がありました。

そこで、以下のようにモデルにバリデーションを設けました。

require 'resolv'

validates :ip_address, presence: true, format: { with: Resolv::IPv4::Regex }

この場合、proxyを設定せずにリクエスト元のIPアドレスをremote_ipメソッドで取得しようとすると、
IPアドレスのフォーマット外の::1という値が返るので、バリデーションに弾かれてしまいます。

このままだとローカル環境でAPIの動作確認ができなくなるので、
curlでproxyを設定してリクエストを送ることにしました。

curl localhost:3000/auth/sign_in -X POST -d '{"email":"test1@gmail.com", "password":"test1234"}' -H "content-type:application/json" -i --proxy http://127.0.0.1:3000
    • proxyオプションの後に、URLを渡すことでproxyを設定することができます。

これで動作を確認してみます。

# binding.pryでデバッグしている想定

request.remote_ip
=> "127.0.0.1"

きちんとproxyの設定ができていることが確認できました。