web-dev-qa-db-ja.com

Herokuを使用した静的IPアドレス(Proximo以外)

Herokuサーバーの1つの静的IPアドレスを取得する方法はありますか? IPアドレスを要求するさまざまなAPIを統合しようとしています。 Herokuのサーバー設定のため、静的IPを持つサーバーは1つもありません。代わりに、IPは動的です。

私はProximoのようなアドオンを調べましたが、これは有料のソリューションのようです。あなたが支払う必要のない静的IPを持っている解決策はありますか?

30
Allen S

QuotaGuard Static Herokuアドオンを使用できます。

QuotaGuardは、コマンドラインからHerokuアプリケーションに接続できます。

$ heroku addons:add quotaguardstatic

インストール後、アプリケーションをアドオンと完全に統合するように構成する必要があります。サインアップすると、アプリケーションでプロキシサービスを構成するときに使用できる一意のユーザー名とパスワードが提供されます

QUOTAGUARDSTATIC_URL設定はアプリの設定で使用でき、APIリクエストのプロキシに使用する必要がある完全なURLが含まれます。これは、次のコマンドを使用して確認できます。

$ heroku config:get QUOTAGUARDSTATIC_URL
http://user:[email protected]:9293 

このプロキシを介して行うすべてのリクエストは、サインアップ時に割り当てられる2つの静的IPの1つから発信されたように宛先サーバーに表示されます。

単純なHTTPとREST client for Ruby= for your IPを検出するために使用できます。

$ gem install rest-client

次に、IRBセッションで以下の例を実行し、返される最終IPが2つの静的IPの1つであることを確認できます。

$ irb

>require "rest-client"

>RestClient.proxy = 'http://user:[email protected]:9293'

>res = RestClient.get("http://ip.jsontest.com")

それでおしまい:)

23
MicRum

Fixie は別のオプションです。 Fixieは、Herokuアプリケーションに送信要求用の静的IPアドレスの固定セットを提供するアドオンです。言語やフレームワークに依存しません。

Fixieはセットアップが簡単で、「はじめに」のドキュメントがあります(Ruby、Node、Java、GoのPython以下)のドキュメントと同様) こちら 。 1つはPython用です。

まず、無料プランにサインアップする必要があります:

$ heroku addons:open fixie
Opening fixie for sharp-mountain-4005…

次に、FIXIE_URLが環境変数として設定されます。 requestsを使用して特定のリクエストをFixie経由でルーティングするには:

import os, requests
proxyDict = { 
              "http"  : os.environ.get('FIXIE_URL', ''), 
              "https" : os.environ.get('FIXIE_URL', '')
            }
r = requests.get('http://www.example.com', proxies=proxyDict)

urllib2を使用すると、同じ機能は次のようになります。

import os, urllib2
proxy  = urllib2.ProxyHandler({'http': os.environ.get('FIXIE_URL', '')})
auth   = urllib2.HTTPBasicAuthHandler()
opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
response = opener.open('http://www.example.com')
html = response.read()

どちらの場合も、これらの要求は、Fixieによって割り当てられた既知のIPアドレスを介して送信されます。

5
user527662

Nginxを予備のプロキシとして使用できます。 nginx.confを編集して、proxy_passを設定します。 proxy_set_headerをherokuappに設定してください

    upstream backend  {

            server xxx.talenox.com;

    }

    server {

            listen          80;

            server_name     rpb1.talenox.com;

            location / {

                    proxy_pass              http://backend;

                    proxy_redirect          off;

                    proxy_set_header        X-Forwarded-For $remote_addr;

                    proxy_set_header        Host ‘xxxxx.herokuapp.com’;

            }

    }
2
amdstorm