Безопасная загрузка Nginx (IP-адрес)

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

Однако я хочу изменить его и сделать ссылку на скачивание только для определенного IP.

Я могу добиться этого с помощью $remote_addr переменная. Однако есть некоторые провайдеры, которые, как мне известно, меняют IP слишком часто (раз в 2 или 3 секунды).

Мой провайдер тоже делает это, например:
я получил 112.112.11.11 как мой IP прямо сейчас, после того, как я обновлю это будет 112.112.11.17, Это поведение устанавливается интернет-провайдером, а не модемом или маршрутизатором, и я знаю еще несколько интернет-провайдеров, которые делают то же самое.

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

То, о чем я думаю, это сказать nginx просто посмотреть на первые 3 блока по IP-адресу, в данном случае 112.112.11.x сможет загрузить тот же файл с той же безопасной ссылкой для скачивания. Будет ли это возможно с помощью nginx conf?

Любые другие альтернативы приветствуются.

2 ответа

Решение

Вы можете добавить новую переменную, используя директиву map, которая будет включать только первые три октета $ remote_addr:

map $remote_addr $remote_net {
   default $remote_addr;
    ~^(?<octets>\d+\.\d+\.\d+) $octets;
}

Тогда просто используйте $ remote_net вместо $ remote_addr. Значение по умолчанию оставит переменную одну для клиентов ipv6 и будет иметь только первые три октета для клиентов ipv4.

Вы можете остановить доступ на уровне ОС. Используйте iptables, чтобы разрешить входящий трафик через порты 80 и 443 из этого диапазона хостов, затем отклоните весь другой трафик через порты 80 и 443.

Другие вопросы по тегам