2013-10-28 55 views
4

我使用Nginx作爲代理來過濾對我的AppEngine Java應用程序的請求。 GAE的位置服務(X-AppEngine-country header)在沒有代理的情況下效果很好,但是現在GAE使用代理服務器的IP作爲客戶端IP,而X-AppEngine-country頭是無用的 - 它返回「ZZ」碼。通過代理使用Google App Engine的位置服務

我知道此時的標題是由客戶端IP確定,如所提到here

X-應用服務引擎國 - 國家從發出請求,作爲ISO 3166-1 alpha-2國家代碼App Engine根據客戶端的IP地址確定這個代碼

問題是我不知道從哪個數據導出這個頭文件。我使用Nginx模塊在X-Forwarded-For,Remote_Addr和Http_Client_IP頭文件中設置客戶端IP,但顯然X-AppEngine-country頭文件來自其他地方。

如何提供GAE客戶端IP,以便從原始IP中檢索正確的國家/地區代碼?

+0

嗨,你能弄清楚這一點嗎?我堅持這個完全一樣的東西。 – sohil

+2

不是。我最終做的是用GeoIP模塊編譯我的nginx代理,使用這個模塊來確定請求的來源,並將它發送給我自己的頭文件。它工作正常,我不再受谷歌的擺佈。 – Peleg

+0

看來我必須做同樣的事情。謝謝。 – sohil

回答

1

您已經提供了答案所需的全部信息:「..App Engine從客戶端的IP地址」「中確定此代碼。所以他們實際上從連接的地方看IP。

由於您的代理位於客戶端和AppEngine之間,因此AppEngine會看到來自代理IP的連接。沒有辦法繞過它。

+2

謝謝彼得。我知道使用Apache服務器而不是GAE可以實現這一點,並且在Apache方面進行了一些配置更改。據我所知,GAE中沒有太多的配置空間。 – Peleg

+0

@Peleg,但是appengine不提供該功能。它不尊重代理標題 – BigSack