Nginx, gunicorn, django не передают реальный IPV6 адрес

В настоящее время я пытаюсь создать простой ip сайт, miip.co с целью просто показать ваш ip адрес при открытии сайта.

Когда я тестирую https://ready.chair6.net/?url=https://miip.co, он показывает "да" для всех литералов, кроме ipv4, только с предупреждением.

Мое расположение nginx выглядит следующим образом

    location / {
        proxy_pass http://unix:/home/www/miip/app.sock;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header REMOTE_ADDR $remote_addr;
        proxy_read_timeout 1000; # this
    }

А моя функция django ip выглядит так

    def get_ip(request):
        x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
        if x_forwarded_for:
            ip = x_forwarded_for.split(',')[0]
        else:
            ip = request.META.get('REMOTE_ADDR')
        return ip

Несмотря на это, он всегда возвращает ipv4. Моя система также на ipv6. Я думаю, что это связано с прокси-сервером nginx, но не уверен.

Хорошо, понял.
В nginx proxy_pass вы должны передать ipv6, а в gunicorn вы должны дважды связать https://djangodeployment.readthedocs.io/en/latest/06-gunicorn.html

Вернуться на верх