Подтвердить что ты не робот

Django получает только IP-адрес 127.0.0.1

У меня есть веб-сервер, настроенный с помощью пушки и nginx и django.

Я получаю доступ к нему удаленно, и с этим: def testIP (запрос):   ip_address = utils.get_ip (запрос)

Я просто продолжаю получать ip-адрес 127.0.0.1 Как я уже сказал, я обращаюсь к нему удаленно, и поэтому он не должен указывать локальный адрес.

Я думаю, что это могло бы иметь какое-то отношение к gunicorn, но я хочу сначала проверить здесь, чтобы увидеть, есть ли у вас какие-то идеи.

4b9b3361

Ответ 1

Как работает get_ip()?

Если nginx является обратным прокси, а gunicorn - сервером приложений, он всегда получает запросы от nginx на локальной машине.

Реальный ip, который nginx отправляет на сервер приложений, в моем случае HTTP_X_REAL_IP через строку конфига nginx proxy_set_header X-Real-IP $remote_addr;

Таким образом, вы можете установить это и в своей учетной записи app django для другого заголовка, используя либо новый IP-заголовок, либо установить request.META['REMOTE_ADDR']= request.META['HTTP_X_REAL_IP']