Назад | Перейти на главную страницу

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

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

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