首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Heroku (而不是Proximo)的静态IP地址

使用Heroku (而不是Proximo)的静态IP地址
EN

Stack Overflow用户
提问于 2013-12-14 18:03:20
回答 3查看 24.9K关注 0票数 32

有没有办法为Heroku服务器获取一个静态IP地址?我正在尝试集成不同的API,这要求一个IP地址。由于Heroku的服务器设置,您永远不会有一个具有静态IP的服务器-相反,您的IP是动态的。

我看过像Proximo这样的附加组件,然而这似乎是一个付费的解决方案。有没有一种解决方案可以让你拥有一个不需要付费的静态IP?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-26 07:28:16

你可以使用QuotaGuard Static Heroku插件。

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

代码语言:javascript
复制
$ heroku addons:add quotaguardstatic

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

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

代码语言:javascript
复制
$ heroku config:get QUOTAGUARDSTATIC_URL
http://user:pass@static.quotaguard.com:9293 

您通过此代理发出的所有请求将显示为来自注册时将分配给您的两个静态up中的一个。

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

代码语言:javascript
复制
$ gem install rest-client

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

代码语言:javascript
复制
$ irb

>require "rest-client"

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

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

就是这样:)

票数 24
EN

Stack Overflow用户

发布于 2015-09-27 07:35:48

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

Fixie很容易设置,并且有“入门”文档(类似于下面的Python文档),适用于Ruby、Node、Java、Go here。这是一个用于Python的代码。

首先你需要注册免费套餐:

代码语言:javascript
复制
$ heroku addons:open fixie
Opening fixie for sharp-mountain-4005…

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

代码语言:javascript
复制
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时,相同的功能将如下所示:

代码语言:javascript
复制
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地址。

票数 8
EN

Stack Overflow用户

发布于 2015-01-10 17:01:40

您可以使用Nginx作为您的备用代理。编辑您的nginx.conf并设置proxy_pass。确保将proxy_set_header设置为您的herokuapp

代码语言:javascript
复制
    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20581920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档