Amazon Elastic Beanstalk - 获取访问者IP地址(python)

时间:2013-01-09 16:25:27

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

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

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

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

我的想法是否正确?如果是这样,有没有办法获得真实访问者的IP地址?

3 个答案:

答案 0 :(得分:6)

你是正确的,你得到的REMOTE_ADDR值是ELB。

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

答案 1 :(得分:3)

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

user_ip = bottle.request.remote_addr

这会自动执行处理并获取用户的地址。有关详细信息,请参阅documentationsource code

答案 2 :(得分:0)

这适用于我的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')