2013-12-14 3 views
26

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

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

+0

Я не думаю, что есть такой вариант. У Heroku есть только несколько IP-адресов, и они сопоставляются с их http-маршрутизаторами. Возможно, есть обходные пути, которые могут работать для вас. Какие API-интерфейсы и что именно они требуют? –

+0

Что вы в конечном итоге использовали в конце? Не было бы проще получить VPS, используемый в качестве поддомена, где-то только для тех вещей, для которых вам нужен выделенный IP? Удивившись на одном и том же вопросе (учитывая переход на Heroku, и мне нужен выделенный IP-адрес для моих потребностей электронной почты.) –

ответ

17

Вы можете использовать QuotaGuard Static Heroku add-on.

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

Вот это :)

+0

На самом деле Quotaguard предлагает два продукта, а один, доступный как дополнение Heroku, не является статическим IP-прокси. Если вы хотите статический IP-адрес, вы должны следить за процессом подписки на своем сайте: https://www.quotaguard.com/pricing#_quotaguardstatic – PEF

+0

Оба дополнения уже находятся в Marketplace. Quotaguard Static для статических IP-адресов, Quotaguard для динамических IP-адресов без Heroku. –

+0

openguard (и fixie) дает вам два IP-адреса. Есть ли какой-либо вариант, когда может быть только один? API, который я потребляю, требует ключа доступа, который они создают путем шифрования зарегистрированного IP. Я могу зарегистрировать более одного IP-адреса, но каждый запрос должен содержать ключ, соответствующий IP-адресу запроса. –

2

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

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

Fixie прост в установке и имеет документацию «получить начальную» (аналогичную той, что приведена ниже для Python) для Ruby, Node, Java, Go here. Вот для 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 ,

+1

Обратите внимание, что в настоящее время это недоступно в регионе ЕС, только в нашем регионе. – lgx

Смежные вопросы