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?
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à:)
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.
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’;
}
}