Django get IP возвращает только 127.0.0.1 - PullRequest
11 голосов
/ 22 декабря 2010

У меня есть веб-сервер с gunicorn, nginx и django.

Я получаю к нему удаленный доступ, и с этим:

def testIP(request):
    ip_address = utils.get_ip(request)

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

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

1 Ответ

25 голосов
/ 22 декабря 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...