2012-01-10 36 views
4

在Google App Engine上使用urlfetch时,是否可以指定代理服务器?在App Engine上制作代理服务器后的URLFetch

具体而言,每次我使用urlfetch进行呼叫时,我都希望GAE通过代理服务器。我想在生产上做到这一点,而不仅仅是开发。

我想使用代理服务器,因为使用谷歌的出站IP地址有问题(速率限制,没有静态出站IP,有时列入黑名单等)。如果您可以自行编辑http消息,则设置代理通常很容易,但GAE的API似乎无法让您这样做。

+0

您认为设置代理将如何帮助限速等? – 2012-01-10 08:01:09

+0

@DanielRoseman - 如果第三方以IP为基础限制请求,则使用代理将有所帮助。例如,Twitter将请求限制为每小时150个IP地址。 – 2012-01-10 09:09:51

+0

@DanielRoseman BenP是对的。每个GAE IP地址上有数千个应用程序,这些限制会立即用完(感谢downvote btw)。 – speedplane 2012-01-10 13:37:17

回答

2

你总是可以滚你自己:

  1. 在固定目标时:只安装一个固定的端口转发的代理服务器上。然后从GAE发送请求到代理。如果您有多个目的地,则在不同的端口上设置转发,每个目的地一个。

  2. 如果是动态目的地(通过固定端口转发处理过多),GAE应用会添加包含最终目的地的自定义http标头(X-Something),然后连接到自定义代理。自定义代理检查此字段并将请求转发到目标。

+0

我和@speedplane的情况相同,这很有帮助。从来没有这样做过,有没有一个现有的代理服务器,你会推荐做这样的事情(如说Squid)? – 2012-06-08 20:33:02

+1

嗨,彼得,你知道一个代理服务器系统,可以像GAE那样很好地扩展吗? – speedplane 2012-08-04 19:21:33

0

我们遇到了这个问题,并与Google云支持联系。他们建议我们使用Google App Engine灵活的一些app.yaml设置,自定义网络和一个ip转发NAT网关实例。

这对我们不起作用,因为App Engine标准中的许多核心功能都未在App Engine Flexible中实施。实质上,我们需要重写我们的产品。

因此,为了适用网址提取请求似乎有我们做了一个自定义代理静态IP:https://github.com/csgactuarial/app-engine-proxy

出于冗余的原因,我建议实施这是一个多区域,多区域,负载均衡系统。

相关问题