У меня есть защищенный паролем каталог с сотнями пользователей в файле htpasswd.
я хочу разрешить загрузку файлов на следующих условиях:
Я видел сотни статей и вопросов о том, как ограничить количество подключений на основе IP. но ни один на основе User
. уточнить User
я имею в виду valid-user
в htpasswd
файл.
пример: допустим, у меня есть htpasswd со следующими пользователями:
simon:$apr1$oL5flt.H$ayy6GOm0TblhH3lJXqf9o0
john:$apr1$JLGdTKlz$72ImnSlauIsCRV4lkrqE3/
и я добавил require valid-user
в htaccess.
john
подключается, чтобы получить file.zip из 192.168.2.8
с 1 подключением. (позволять)john
делает еще 31 соединение из 32 (или любого другого числа) из 192.168.2.8
. (разрешить) [потому что ip соответствует уже активным соединениям]john
подключается от 192.168.2.9
чтобы получить любой файл перед закрытием предыдущих подключений. (запретить) [потому что активные подключения имеют разные IP-адреса]simon
подключается от 192.168.2.8
(тот же IP, что и у активных подключений), (разрешить) [других подключений от Саймона нет]john
из 192.168.2.8
заканчивает скачивание file.zip
john
из 192.168.2.9
хочет скачать файл (разрешить).заранее спасибо.
Использовать iptables? Это ниже может быть не идеально, но я надеюсь, что оно укажет вам правильное направление. Если у вас есть несколько виртуальных хостов, где вам не нужно это ограничение, вам, возможно, придется разместить его на отдельном IP-адресе или немного поиграть с местом назначения.
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 1 -j REJECT --reject-with tcp-reset