Я настраиваю 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
?
Любые другие альтернативы приветствуются.
Вы можете добавить новую переменную, используя карта директива, которая будет включать только первые три октета $ 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.