Сначала вы должны заставить nginx передать удаленный адрес клиента вышестоящему серверу (gunicorn):
server {
location / {
proxy_pass http://proxy_addr;
proxy_set_header X-Real-IP $remote_addr;
}
}
Затем вы можете получить доступ к удаленному адресу в META django запроса следующим образом:
ip_address = request.META["HTTP_X_REAL_IP"]
Обратите внимание, что вы также можете использовать dict.get, чтобы избежать KeyError при запуске runserver:
ip_address = request.META.get("HTTP_X_REAL_IP")