4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

herokuでProximoを使って固定IPを取得する方法

Last updated at Posted at 2019-07-08

TL;DR

IP制限がかかっている環境にherokuからリクエストを送りたい場合に、
固定IPが必要になるケースにて、proximoが役に立つという話

環境

  • rails '5.2.3'
  • ruby '2.5.2'

Setupドキュメント

本家を参考にすすめる、以下必要な手順をピックアップして記載する
https://devcenter.heroku.com/articles/proximo

Addonをとりこむ

$ heroku addons:create proximo:development

planは5ドルからスタートする

登録後に、herokuの環境変数PROXIMO_URLが追加されており、PROXYにつづく数字が固定IPとなっている

PROXYのURLは コンソールからも確認できる

$ heroku config | grep PROXIMO_URL

http://proxy:d898e01dc292431cbbbf3c79993de7d9@proxy-54-83-47-xx.proximo.io

この場合は、54.83.47.xxが固定IPとなる

ProximoWrapperをRailsにとりこむ

Railsで使えるように、以下のようにcurlでファイルを取得する

$ cd ~/myapp
$ curl http://downloads.proximo.io/proximo-stacklet.tgz | tar xz

ここでCommitしろとマニュアルにはかいているのだが、

vendor/danteが、herokuにpushするとき、

私の環境だけかもしれないが、以下のようなエラーがでたので、vendor配下を使わないようにする。

unexpected token at 'ERROR: ld.so: object 'libdl.so' from LD_PRELOAD

$ mv vendor/dante proximo/dante

としてpathを変更した。
それに伴い、bin/proximo内のvendorパスを上記で変更したパスに変更してCommitした

image.png

Procfileを作成

bin/proximoを頭につける。

Procfile
web: bin/proximo bin/rails server -p $PORT -e $RAILS_ENV

別途workerが必要な場合は同じように対応する

固定IP確認

検証方法はなんでもよいのだが、簡易的にダミー環境を作成してそこにhttpリクエストをとばすことで確認する

lib/tasks/ip_debug.rake
require "rest-client" # gemで追加する

desc "Test static ip"
task :dummy_request, :environment do
  RestClient.proxy = ENV["PROXIMO_URL"] if ENV["PROXIMO_URL"]
  RestClient.get(ENV["PROXIMO_REQUEST_TEST_URL"])
end

PROXIMO_REQUEST_TEST_URLには、例えば、ngrokなどをつかって外部エンドポイントをローカルにとりこむのが
はやいだろう。さらにそのエンドポイントにbinding.pryを仕込めば、requestをデバッグできる。

  • ダミーリクエスト実行

$ heroku console rake dummy_request

  • リクエスト受け先のRails

homeコントローラのtopをルートにしている

app/controllers/home_controller.rb
class HomeController < ApplicationController
  def top
    binding.pry
  end
end
  • 無事固定IPにてリクエストしていることを確認
$ request.remote_ip
=> "54.83.47.xx"
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?