Heroku的静态IP地址(不是Proximo)

All*_*n S 29 ip heroku static-ip-address

有没有办法为Heroku服务器获取一个静态IP地址?我正在尝试集成各种要求IP地址的API.由于Heroku的服务器设置,您永远不会有一台带有静态IP的服务器 - 而是您的IP是动态的.

我已经研究过像Proximo这样的附加组件,但这似乎是一个付费的解决方案.是否有一个解决方案,你有一个你不需要支付的静态IP?

Mic*_*Rum 23

您可以使用QuotaGuard Static Heroku附加组件.

可以通过命令行将QuotaGuard附加到Heroku应用程序:

$ heroku addons:add quotaguardstatic
Run Code Online (Sandbox Code Playgroud)

安装后,应将应用程序配置为与加载项完全集成.注册时,您将获得一个唯一的用户名和密码,您可以在应用程序中配置代理服务时使用该用户名和密码

应用程序配置中将提供QUOTAGUARDSTATIC_URL设置,其中包含用于代理API请求的完整URL.这可以使用下一个命令确认:

$ heroku config:get QUOTAGUARDSTATIC_URL
http://user:pass@static.quotaguard.com:9293 
Run Code Online (Sandbox Code Playgroud)

您通过此代理发出的所有请求都将显示给目标服务器,以便您在注册时将分配给您分配的两个静态IP之一.

您可以使用简单的HTTP和REST客户端来检测您的IP:

$ gem install rest-client
Run Code Online (Sandbox Code Playgroud)

接下来,您可以在IRB会话中运行以下示例,并验证返回的最终IP是否是您的两个静态IP之一.

$ irb

>require "rest-client"

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

>res = RestClient.get("http://ip.jsontest.com")
Run Code Online (Sandbox Code Playgroud)

而已:)


use*_*662 5

Fixie是另一种选择。Fixie是一个插件,可为Heroku应用程序提供一组固定的静态IP地址,用于出站请求。它与语言和框架无关。

Fixie易于安装,并已“上手”的文件(类似一个为Python下同)为Ruby,节点,爪哇,转到这里。这是用于Python的代码。

首先,您需要注册免费计划:

$ heroku addons:open fixie
Opening fixie for sharp-mountain-4005…
Run Code Online (Sandbox Code Playgroud)

接下来,FIXIE_URL将设置为环境变量。使用requests以下命令通过Fixie路由特定请求:

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)
Run Code Online (Sandbox Code Playgroud)

使用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()
Run Code Online (Sandbox Code Playgroud)

在两种情况下,这些请求都将通过Fixie分配的已知IP地址发出。

  • 请注意,这目前在欧盟地区不可用,仅在美国地区可用。 (2认同)