App 引擎请求 headers 获取 IP 地址

App engine request headers for ip address

我有一个运行 REST 网络服务的应用引擎应用程序。 我想从我的网络服务处理的所有请求中提取 IP 地址。

来自 javax.servlet.http.HttpServletRequest 我正在尝试提取检查 "X-Real-IP" 的 IP 地址,如果为空或 "unknown" 检查 "X-Forwarded-For" 列表中的第一个 IP header 如果为空或 "unknown" 从 request.getRemoteAddr() 获取它。

我以为我涵盖了所有情况,但我仍然得到像 10.x.x.x 或 127.0.0.1 或未知的 IP 地址。

我知道 App Engine 应用程序 运行 位于负载平衡器之后,并且实例是动态的,我肯定会在请求中省略 header 因为我可以在日志(来自 google)。

编辑:我正在处理的所有请求都是直接请求服务(没有 queue 或 cron 请求)。

有没有其他 header 要检查的想法?

谢谢。

this Question 的答案可能对您有所帮助。有很多 headers 需要检查:

private static final String[] HEADERS_TO_TRY = { 
    "X-Forwarded-For",
    "Proxy-Client-IP",
    "WL-Proxy-Client-IP",
    "HTTP_X_FORWARDED_FOR",
    "HTTP_X_FORWARDED",
    "HTTP_X_CLUSTER_CLIENT_IP",
    "HTTP_CLIENT_IP",
    "HTTP_FORWARDED_FOR",
    "HTTP_FORWARDED",
    "HTTP_VIA",
    "REMOTE_ADDR" };