' Google App Engine不支持使用代理'连接到Google Compute Engine代理服务器

时间:2018-01-29 03:10:28

标签: java google-app-engine proxy google-cloud-platform google-compute-engine

我们正在尝试连接外部API的Java 7 Google App Engine实例。由于API服务器需要列入白名单的IP地址才能访问,因此我们设置了安装了Squida solution proposed elsewhere)的Google Compute Engine代理服务器,然后将API服务器上代理服务器的外部IP地址列入白名单

这样,从GAE发出的请求将首先重定向到GCE,从而允许进行API调用。但是,GAE请求当前失败并显示以下消息:

 WARNING: Google App Engine does not support the use of proxies. 

有人可以建议解决方案吗?

1 个答案:

答案 0 :(得分:0)

首先,不推荐使用Java 7运行时,因此您应该迁移到Java 8版本。您可以通过在appengine-web.xml文件中指定Java 8运行时来执行此操作:

vSync

随着迁移到Java 8,其他功能也会发生变化。所有更改都会在here中解释。

如果由于配置中的某些问题而出现错误,请确保您正在使用的实例作为代理正确配置(使用Squid是正常的)。应正确建立防火墙规则和访问控制列表,例如:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <runtime>java8</runtime>
  <threadsafe>true</threadsafe>
</appengine-web-app>

您还应该通过在Squid配置中启用它们来设置正确的访问控制条目。以下是一些例子:

gcloud compute firewall-rules create [FIREWALL_RULE] --network [NETWORK] --allow tcp:3128

如果您关注this example,则可以测试正确使用用作代理服务器的实例。

Java中有一个名为ApiProxy(sudo sed -i 's:#\(http_access allow localnet\):\1:' /etc/squid/squid.conf sudo sed -i 's:#\(http_access deny to_localhost\):\1:'/etc/squid/squid.conf )的静态类,可用作从用户代码到应用程序服务器的所有调用的集合点。 Here你可以找到与它相关的所有类和方法,以及与ApiProxy相关的其他类。