Amazon Elastic Beanstalk - получение IP-адреса посетителя (python)

Мое приложение разработано на Python и в структуре bottle. Я использую следующий фрагмент кода для получения IP-адресов посетителей страницы:

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

Он отлично работает на моем локальном компьютере, однако после развертывания в экземпляре AWS Beanstalk я думаю, что получаю IP-адрес балансировщика нагрузки, поскольку user_ip читает что-то вроде 10.48.95.234.

Правильно ли я думаю? Если да, то есть ли способ получить IP-адрес настоящего посетителя?


person petr    schedule 09.01.2013    source источник


Ответы (3)


Вы правы, что значение REMOTE_ADDR, которое вы получаете, относится к ELB.

Обычно в запросе нужно искать заголовок X-Forwarded-For. ELB вставит этот заголовок, чтобы вы знали IP-адрес конечного клиента.

person Mike Brant    schedule 09.01.2013

В этом случае также помогает специальная версия для бутылки:

user_ip = bottle.request.remote_addr

Это автоматически выполняет обработку и получает адрес пользователя. См. документацию или исходный код для получения дополнительных сведений.

person petr    schedule 09.01.2013
comment
Это также проверяет наличие X-Forwarded-For? - person Jack Marchetti; 22.04.2014
comment
У меня это работает на ELB - и если приведенное выше заявление на плакате верное, это означает, что ti тоже это делает. Есть ли у вас противоположный опыт? - person petr; 23.04.2014

Это работает для моего 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')
person legel    schedule 19.07.2016