Ваша конфигурация nginx должна добавить это в заголовки, не уверен, что это сделано по умолчанию.$server_addr
- это то, что вам нужно добавить в заголовки, поэтому в вашей конфигурации nginx вам нужно добавить (при условии, что вы используете обратный прокси-сервер):
proxy_set_header X-Server-IP $server_addr;
А затем в вашем get_local_ip
метод, с помощью которого вы сможете получить доступ к этому заголовку с помощью:
return request.META.get('HTTP_X_SERVER_IP')
Обратите внимание, что если ваш сервер nginx находится за балансировщиком нагрузки, это все равно не будет адрес, который «видят» ваши пользователи, так как ониувидеть IP-адрес вашего балансировщика нагрузки.Адрес, который они видят:
import socket
ip_address = socket.gethostbyname(request.META.get('SERVER_NAME'))
, который просто разрешает ваше доменное имя с использованием DNS (и может замедлить ваш запрос, так как необходимо выполнить поиск DNS, в зависимости от TTL, который вы установили в DNS).записи)