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

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

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

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

Мои взгляды правильны? Если так, есть ли какой-либо способ получить IP-адрес настоящего посетителя?

1
nl ja de

3 ответы

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

Необходимо было бы, как правило, искать X-Forwarded-For заголовок в запросе. ELB вставит этот заголовок, чтобы сообщить IP-адрес клиента конца.

6
добавлено
Вы абсолютно правильны, Спасибо!
добавлено автор petr, источник

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

user_ip = bottle.request.remote_addr

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

3
добавлено
Это работает на меня на ELB - и если вышеупомянутое poster' s заявление правильно, это означает, что ti делает это также. У вас есть противоположный опыт?
добавлено автор petr, источник
Это также проверяет на X-Forwarded-For?
добавлено автор Jack Marchetti, источник

Это работает на мой 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')
0
добавлено