【问题标题】:Amazon Elastic Beanstalk - get visitor IP address (python)Amazon Elastic Beanstalk - 获取访问者 IP 地址 (python)
【发布时间】:2016-07-20 04:22:26
【问题描述】:

我的应用程序是用 python 和bottle 框架开发的。我正在使用以下代码 sn-p 来获取页面访问者的 IP 地址:

user_ip = bottle.request.environ['REMOTE_ADDR']

它在我的本地机器上运行良好,但是,在部署到 AWS Beanstalk 实例后,我认为我正在获取负载均衡器 IP,因为 user_ip 读取的内容类似于 10.48.95.234。

我的想法对吗?如果有,有什么方法可以获取真实访客的ip地址?

【问题讨论】:

    标签: amazon-web-services bottle amazon-elastic-beanstalk


    【解决方案1】:

    您是正确的,您获得的 REMOTE_ADDR 值是针对 ELB。

    您通常需要在请求中查找 X-Forwarded-For 标头。 ELB 将插入此标头以让您知道最终客户端 IP 地址。

    【讨论】:

      【解决方案2】:

      还有一个特定于瓶子的版本可以在这种情况下提供帮助:

      user_ip = bottle.request.remote_addr
      

      这会自动进行处理并获取用户的地址。请参阅documentationsource code 了解更多详情。

      【讨论】:

      • 这是否也检查 X-Forwarded-For ?
      • 它在 ELB 上对我有用 - 如果上面的发帖人的陈述是正确的,这意味着 ti 也这样做。你有相反的经历吗?
      【解决方案3】:

      这适用于我的 ELB:

      from bottle import route, run, request
      
      @route('/hello')
      def hello():
          return "Hello, {}".format(request.remote_route)
      
      run(host="0.0.0.0", port=8000, server='twisted')
      

      【讨论】:

        猜你喜欢
        • 2015-06-21
        • 2020-10-06
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 2020-12-12
        • 2021-01-05
        • 2012-01-28
        相关资源
        最近更新 更多