【问题标题】:How to get real request client's ip from App Engine如何从 App Engine 获取真实请求客户端的 ip
【发布时间】:2016-05-30 13:44:44
【问题描述】:

我已经设置了app.set('trust_proxy', 1);,就像this page 建议的那样 但是对于每个请求,它都会提供以下 IP 地址 169.254.160.2 ...

req.ip => 169.254.160.2
req.ips => [ '169.254.160.2' ]

标头建议的标头也具有相同的值... 那么我如何获得 ip 因为所有“我的 ip 是什么”网站都告诉我我的 ip 是 130.204.67.112

那么我如何在 App Engine 中获取我的真实 IP 呢?

ps。如果这很重要,我正在为我的应用程序使用自定义 docker 容器(我认为它不重要但仍然如此)我已经从需要 app.enable('trust_proxy') 的 heroku 迁移并且它确实有效。

【问题讨论】:

    标签: node.js google-app-engine express


    【解决方案1】:

    您可以直接使用x-appengine-user-ip 标头:

    var ip = req.headers['x-appengine-user-ip'];
    

    注意:有些人用x-appengine-user-ip 得到undefined:你可以用x-forwarded-for 代替测试。 (泰杰)

    【讨论】:

    • 是的,我确实发现这是唯一返回正确 IP 地址的标头(只是没有时间做出自我回答......)
    • 我在 Google App Engine 上使用 Adonis.js 作为后端 node.js 框架。 x-appengine-user-ip 给了我undefined。在我的情况下,x-forwarded-for 是检索客户端 IP 的正确标头。
    • x-forwarded-for 如果您使用 cdn 来提升应用引擎页面,则很有用。
    • 运行时的谷歌文档建议X-Forwarded-For。我很好奇是否有文档说明x-appengine-user-ip 是官方标题? cloud.google.com/appengine/docs/flexible/nodejs/reference/…
    猜你喜欢
    • 2011-03-07
    • 2020-05-22
    • 2016-10-06
    • 2012-08-04
    • 1970-01-01
    • 2016-07-27
    • 2016-12-02
    • 2012-07-22
    • 2016-10-11
    相关资源
    最近更新 更多