【发布时间】: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