首页 文章

连接到Google Compute Engine代理服务器时出现'Google App Engine does not support the use of proxies'错误

提问于
浏览
0

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

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

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

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

1 回答

  • 0

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

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

    随着迁移到Java 8,还有其他一些功能会发生变化 . 所有更改都会被解释为here .

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

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

    您还应该通过在Squid配置中启用它们来设置正确的访问控制条目 . 这里有些例子:

    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
    

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

    Java中有一个名为ApiProxy( com.google.apphosting.api )的静态类,可用作从用户代码到应用程序服务器的所有调用的集合点 . Here您可以找到与其相关的所有类和方法,以及与ApiProxy相关的其他类 .

相关问题