具有Heroku的静态IP地址(非Proximo)

具有Heroku的静态IP地址(非Proximo),heroku,ip,static-ip-address,Heroku,Ip,Static Ip Address,有没有办法为Heroku服务器获取一个静态IP地址?我正在尝试集成各种要求IP地址的API。由于Heroku的服务器设置,您从来没有一台服务器具有静态IP,而您的IP是动态的 我已经研究过像Proximo这样的附加组件,但是这似乎是一个付费的解决方案。有没有一种解决方案可以让您拥有一个不必付费的静态IP?您可以使用Heroku插件 QuotaGard可以通过命令行连接到Heroku应用程序: $ heroku addons:add quotaguardstatic 安装后,应将应用程序配置为与

有没有办法为Heroku服务器获取一个静态IP地址?我正在尝试集成各种要求IP地址的API。由于Heroku的服务器设置,您从来没有一台服务器具有静态IP,而您的IP是动态的

我已经研究过像Proximo这样的附加组件,但是这似乎是一个付费的解决方案。有没有一种解决方案可以让您拥有一个不必付费的静态IP?

您可以使用Heroku插件

QuotaGard可以通过命令行连接到Heroku应用程序:

$ heroku addons:add quotaguardstatic
安装后,应将应用程序配置为与附加组件完全集成。 当您注册时,将为您提供一个唯一的用户名和密码,您可以在应用程序中配置代理服务时使用该用户名和密码

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

$ heroku config:get QUOTAGUARDSTATIC_URL
http://user:pass@static.quotaguard.com:9293 
您通过此代理发出的所有请求将在目标服务器上显示为来自您注册时将分配的两个静态IP之一

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

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

$ irb

>require "rest-client"

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

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

就是这样:)

您可以使用Nginx作为备用代理。编辑nginx.conf并设置proxy\u pass。确保将proxy\u set\u头设置为您的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’;

            }

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

Fixie易于设置,并且有Ruby、Node、Java、Go的“入门”文档(类似于下面Python的文档)。这是Python的一个例子

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

$ heroku addons:open fixie
Opening fixie for sharp-mountain-4005…
接下来,将
FIXIE\u URL
设置为环境变量。要使用
请求
通过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)
使用
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()

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

我认为没有这样的选择。Heroku只有少数IP,这些IP被映射到他们的http路由器。不过,也许有一些变通办法可以为你提供帮助。什么样的API,它们到底需要什么?您最终使用了什么?在某个地方获得一个VPS(用作子域)不是更容易吗?它只用于那些你需要专用IP的东西?我也在想同样的问题(考虑迁移到Heroku,我需要一个专用的IP来满足我的电子邮件需求。)实际上Quotaguard提供了两种产品,作为Heroku插件提供的一种不是静态IP代理。如果你想要一个静态IP,你应该遵循他们网站上的订阅流程:两个附加组件现在都在市场上。QuotaGard静态用于静态IP,QuotaGard用于动态非Heroku IP。openguard(和fixie)提供两个IP。当只有一个选项时,是否有其他选项?我使用的API需要一个访问密钥,他们通过加密已注册的IP创建该密钥。我可以注册多个IP,但每个请求都必须包含一个与请求IP匹配的密钥。请注意,这目前在欧盟地区不可用,只有美国地区可用。至今仍然如此!不再是这样了!