我在Google App Engine上有一个Java Web应用程序,它向外部API发出请求 . API最近要求将IP地址列入白名单以访问其服务 . 由于GAE不提供静态IP,我理解一种解决方案是设置GCE实例(使用静态IP)并将其用作GAE应用程序发出的外部请求的代理 .
我已经使用Debian GNU / Linux 9设置了一个f1-micro实例,并根据the documentation创建了一个静态外部IP地址 .
如何安装nginx并设置GAE以将请求路由到GCE代理?
我在Google App Engine上有一个Java Web应用程序,它向外部API发出请求 . API最近要求将IP地址列入白名单以访问其服务 . 由于GAE不提供静态IP,我理解一种解决方案是设置GCE实例(使用静态IP)并将其用作GAE应用程序发出的外部请求的代理 .
我已经使用Debian GNU / Linux 9设置了一个f1-micro实例,并根据the documentation创建了一个静态外部IP地址 .
如何安装nginx并设置GAE以将请求路由到GCE代理?
2 回答
我们遇到了类似的问题,客户需要将我们的IP地址列入白名单 . 我们解决了这个问题:
使用静态IP地址启动计算引擎 . 这是我们给客户的IP地址
在计算引擎上安装了Squid(https://help.ubuntu.com/lts/serverguide/squid.html)
然后,我们通过代理服务器重定向来自App Engine的所有呼叫 . 你没有列出你正在使用的语言,但对于PHP,这意味着在CURL操作中添加以下两行:
curl_setopt($ ch,CURLOPT_PROXY,“http://” . $ _SERVER ['SQUID_PROXY_HOST'] . “:” . $ _SERVER ['SQUID_PROXY_PORT']);
curl_setopt($ ch,CURLOPT_PROXYUSERPWD,$ _SERVER ['SQUID_PROXY_USER'] . “:” . $ _SERVER ['SQUID_PROXY_PWD']);
需要注意的一点是,根据您正在进行的呼叫次数,微型实例可能不适合您 . 我们最初在微型盒子上设置我们的代理服务器,但每隔几天就要重新启动它 . 我们最终切换到一个标准盒子,从那时起就没有遇到任何问题 .
您可以通过使用路由规则在相同的VPC自定义网络中配置应用引擎实例和自定义NAT实例来解决此问题 .
相关的google文档如下;
将计算引擎VM实例配置为Nat Gateway(https://cloud.google.com/vpc/docs/special-configurations#natgateway)
为此实例创建路由规则(https://cloud.google.com/vpc/docs/using-routes#addingroute)和(https://cloud.google.com/vpc/docs/using-routes#canipforward)
配置app.yaml网络属性(https://cloud.google.com/appengine/docs/flexible/java/configuring-your-app-with-app-yaml#network_settings)
如果你有复杂的系统,我强烈建议你创建子网和某个标签来鞭打哪些GAE实例转发到NAT网关 .