Adresse IP statique avec Heroku (pas Proximo)

y a-t-il un moyen d'obtenir une adresse IP statique pour un serveur Heroku? J'essaie d'intégrer diverses API qui demandent une adresse IP. En raison de la configuration du serveur D'Heroku, vous n'avez jamais de serveur avec une IP statique - à la place votre IP est dynamique.

j'ai regardé dans les add-ons comme Proximo, cependant cela semble être une solution payante. Est-il une solution où vous avez une adresse IP statique que vous n'avez pas à payer pour?

27
demandé sur user1775598 2013-12-14 14:03:20

3 réponses

Vous pouvez utiliser QuotaGuard Static Heroku add-on.

QuotaGuard peut être attaché à une application Heroku via la ligne de commande:

$ heroku addons:add quotaguardstatic

après l'installation, l'application doit être configurée pour s'intégrer complètement à l'add-on. Lorsque vous vous inscrivez, vous recevrez un nom d'utilisateur et un mot de passe uniques que vous pouvez utiliser lors de la configuration de votre service proxy dans votre application

un paramètre QUOTAGUARDSTATIC_URL sera disponible dans la configuration de l'application et contiendra l'URL complète que vous devriez utiliser pour proxy vos requêtes API. Ceci peut être confirmé en utilisant la commande suivante:

$ heroku config:get QUOTAGUARDSTATIC_URL
http://user:pass@static.quotaguard.com:9293 

toutes les requêtes que vous faites via ce proxy apparaîtront au serveur de destination comme provenant de l'un des deux IPs statiques qui vous seront assignés lors de votre inscription.

vous pouvez utiliser un simple client HTTP and REST pour Ruby pour détecter votre IP:

$ gem install rest-client

Ensuite, vous pouvez exécuter l'exemple ci-dessous dans un CISR session et vérifiez que la dernière adresse IP retournée est l'une de vos deux adresses IP statiques.

$ irb

>require "rest-client"

>RestClient.proxy = 'http://user:pass@static.quotaguard.com:9293'

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

voilà:)

19
répondu MicRum 2014-01-22 17:10:03

Fixie est une autre option. Fixie est un add-on qui fournit aux applications Heroku un ensemble fixe d'adresses IP statiques pour les requêtes sortantes. C'est le langage - et-cadre-agnostique.

Fixie est facile à configurer et a la documentation "get started" (semblable à celle de Python ci-dessous) pour Ruby, Node, Java, Go ici. Voici celui pour Python.

vous devez d'Abord vous inscrire pour le plan libre:

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

suivant, le FIXIE_URL sera défini comme variable d'environnement. Pour acheminer une demande spécifique via Fixie en utilisant 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)

en utilisant urllib2 la même fonctionnalité devrait ressembler à ceci:

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

dans les deux cas, ces requêtes passeraient par une adresse IP connue assignée par Fixie.

4
répondu user527662 2015-09-26 23:35:48

Vous pouvez utiliser Nginx comme votre mandataire de réserve. Modifiez votre nginx.conf et set proxy_pass. Assurez-vous de définir proxy_set_header à votre 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
répondu amdstorm 2015-01-10 09:01:40