Подтвердить что ты не робот

Статический IP-адрес с Heroku (не Proximo)

Есть ли способ получить один статический IP-адрес для сервера Heroku? Я пытаюсь интегрировать различные API, которые запрашивают IP-адрес. Из-за установки сервера Heroku у вас никогда не будет одного сервера со статическим IP-адресом, вместо этого ваш IP-адрес будет динамическим.

Я изучил такие дополнения, как Proximo, однако это, похоже, платное решение. Есть ли решение, в котором у вас есть статический IP-адрес, за который вам не нужно платить?

4b9b3361

Ответ 1

Вы можете использовать QuotaGuard Static надстройка Heroku.

QuotaGuard можно подключить к приложению Heroku через командную строку:

$ heroku addons:add quotaguardstatic

После установки приложение должно быть настроено на полную интеграцию с надстройкой. При регистрации вы получите уникальное имя пользователя и пароль, которые вы можете использовать при настройке своей прокси-службы в своем приложении.

Параметр QUOTAGUARDSTATIC_URL будет доступен в конфигурации приложения и будет содержать полный URL-адрес, который вы должны использовать для проксирования ваших запросов API. Это можно подтвердить, используя следующую команду:

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

Все запросы, которые вы делаете через этот прокси, будут отображаться на целевом сервере, исходящим от одного из двух статических IP-адресов, которые будут назначены при регистрации.

Вы можете использовать простой HTTP и REST-клиент для Ruby для обнаружения вашего IP-адреса:

$ gem install rest-client

Затем вы можете запустить приведенный ниже пример в сеансе IRB и убедиться, что последний IP-адрес является одним из двух ваших статических IP-адресов.

$ irb

>require "rest-client"

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

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

Что это:)

Ответ 2

Фикси это еще один вариант. Fixie - это надстройка, которая предоставляет приложениям Heroku фиксированный набор статических IP-адресов для исходящих запросов. Это language- и не зависит от структуры.

Fixie прост в настройке и имеет документацию "для начала" (аналогичную приведенной ниже для Python) для Ruby, Node, Java, Go здесь. Вот тот, для Python.

Для начала вам нужно подписаться на бесплатный план:

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

Затем FIXIE_URL будет установлен как переменная окружения. Чтобы направить конкретный запрос через Fixie, используя requests:

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()

В обоих случаях эти запросы будут поступать через известный IP-адрес, назначенный Fixie.

Ответ 3

Вы можете использовать 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’;

            }

    }

Ответ 4

Есть работа вокруг. Если вам нужно, чтобы адрес staticip.io указывал на динамический адрес, чтобы вы не были "заблокированы" от своего IP-адреса, вы можете использовать службу динамических доменных имен, например staticip.io. Я надеюсь, что это отвечает на ваш вопрос.