2013-10-28 4 views
4

저는 AppGrid Java 응용 프로그램에 대한 요청을 필터링하기 위해 Nginx를 프록시로 사용하고 있습니다. GAE의 위치 서비스 (X-AppEngine- 국가 헤더)는 프록시없이 훌륭하게 작동하지만 현재 GAE는 프록시 서버의 IP를 클라이언트 IP로 사용하고 있으며 X-AppEngine 국가 헤더는 쓸모가 없습니다. "ZZ"를 국가로 반환합니다 암호. 요청이 ISO로 시작된 나라 3166-1 알파 2 국가 -프록시가있는 Google App Engine의 위치 서비스 사용

"X-AppEngine에 - 국가 : here을 언급 한 바와 같이

나는, 헤더는 클라이언트 IP에 의해 결정된다는 것을 알고있다 App Engine이 클라이언트의 IP 주소에서이 코드를 확인합니다. "

문제는이 헤더의 파생 데이터를 알 수 없다는 것입니다. Nginx 모듈을 사용하여 X-Forwarded-For, Remote_Addr 및 Http_Client_IP 헤더에 클라이언트 IP를 설정했지만 분명히 X-AppEngine-country 헤더는 다른 곳에서 파생되었습니다.

원본 IP에서 올바른 국가 코드를 검색 할 수 있도록 어떻게 GAE에 클라이언트 IP를 제공 할 수 있습니까?

+0

안녕하세요, 이것을 알아낼 수 있었습니까? 나는이 똑같은 일에 매달렸다. – sohil

+2

아닙니다. 내가 결국 GeoIP 모듈로 내 nginx 프록시를 컴파일하고, 요청의 출처를 결정하기 위해이 모듈을 사용하고, 자신의 헤더로 GAE를 보냈습니다. 그것은 잘 작동하고 나는 더 이상 Google의 자비에 아닙니다. – Peleg

+0

나는 똑같은 일을해야 할 것 같습니다. 감사. – sohil

답변

1

이미 대답에 필요한 모든 정보를 제공해 주셨습니다 : "..App Engine은 클라이언트의 IP 주소"에서이 코드를 확인합니다. 그래서 그들은 실제로 연결이 이루어진 곳의 IP를 봅니다.

프록시가 클라이언트와 AppEngine 사이에 있기 때문에 AppEngine은 프록시 IP에서 오는 연결을 봅니다. 주위에.

+2

베드로 감사합니다. GAE 대신 아파치 서버를 사용할 수 있으며 아파치 측에서는 약간의 설정 변경이 필요하다는 것을 알고 있습니다. 내가 아는 한 GAE에는 그다지 구성 공간이 없습니다. – Peleg

+0

@Peleg,하지만 appengine은 해당 기능을 제공하지 않습니다. 프록시 헤더를 존중하지 않습니다. – BigSack