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