Безопасная загрузка 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.