【问题标题】:Using Google App Engine's locations services with proxy通过代理使用 Google App Engine 的位置服务
【发布时间】:2013-10-28 08:30:28
【问题描述】:

我使用 Nginx 作为代理来过滤我的 AppEngine Java 应用程序的请求。 GAE 的位置服务(X-AppEngine-country 标头)在没有代理的情况下工作得很好,但现在 GAE 使用代理服务器的 IP 作为客户端 IP,而 X-AppEngine-country 标头完全没用 - 它返回“ZZ”作为国家代码。

我知道header是由客户端IP决定的,如here所说:

"X-AppEngine-Country - 发出请求的国家/地区,采用 ISO 3166-1 alpha-2 国家/地区代码。 App Engine 根据客户端的 IP 地址确定此代码。 "

问题是我不知道这个标头是从什么数据中得出的。我使用 Nginx 模块在 X-Forwarded-For、Remote_Addr 和 Http_Client_IP 标头中设置客户端 IP,但显然 X-AppEngine-country 标头来自其他地方。

如何向 GAE 提供客户端 IP,以便它可以从原始 IP 中检索正确的国家/地区代码?

【问题讨论】:

  • 嗨,你能解决这个问题吗?我被同样的事情困住了。
  • 并非如此。我最终做的是用 GeoIP 模块编译我的 nginx 代理,使用这个模块来确定请求的来源,并用我自己的标头发送它 GAE。它运行良好,我不再受 Google 摆布。
  • 看来我必须做同样的事情。谢谢。

标签: google-app-engine nginx proxy geolocation


【解决方案1】:

您已经提供了回答所需的所有信息:“..App Engine 根据客户端的 IP 地址确定此代码”。因此,他们实际上会查看建立连接的 IP。

由于您的代理位于客户端和 AppEngine 之间,因此 AppEngine 会看到来自代理 IP 的连接。没办法。

【讨论】:

  • 谢谢彼得。我知道这可以通过 Apache 服务器而不是 GAE 来实现,并在 Apache 端进行一些配置更改。据我所知,我在 GAE 中没有那么多配置空间。
  • @Peleg,但 appengine 不提供该功能。它不尊重代理标头
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多