Ограничение подключений к директории по IP

12
SJ
На сайте с 11.04.2011
Offline
28
2171

Доброй ночи/дня всем.

Столкнулся с такой задачкой: отдавая файл через веб-сервер, нужно ограничить число подключений к этому файлу.

Что имеется: Win, Apache 2.2.x, Php 5.2.x

Движения на встречу решения задачки:

1) Перерыл интернет в поисках модулей, которые могут ограничивать число подключений, например к определенной папке. Ранее пользовался mod_limitipconn, все отлично, только он не позволяет устанавливать ограничения на несколько папок. Если устанавливает - то считает все подключенные IP.

Много чего находил в инете, но как правило или под никсы, либо на старые версии апачи. Если есть альтернативы - буду рад глянуть.

2) Попробовал реализовать через Apache+PHP. Отдавать файл, естественно, PHP - совсем нерационально, посему подумал о следующей схеме. Обращаться, например, к директории где лежит .htaccess, через него перенаправляться на скачивание файла.

Есть возможность попутно через .htaccess, переходя к скачиванию файла запустить php-скрипт?

Ну и возможно есть какие-либо упрощенные решения проблемы? Кроме как ставить ngninx).

Заранее благодарю!

zexis
На сайте с 09.08.2005
Offline
388
#1

Рекомендую поставить в качестве фронтенда nginx.

Там есть возможность задать разные лимиты на количество коннектов и количество запросов с одного IP к каждой отдельной папке.

limit_con

Плюс для отдачи статических файлов он будет тратить меньше ресурсов чем апаче.

И в нем есть много разных полезных функций.

SJ
На сайте с 11.04.2011
Offline
28
#2

zexis, не хочется воротить. А статических страниц практически нет. На каждой что-то творит php.

Может подскажите, вот есть примерчик, как я понял - дергает перл-скрипт при обращении к директории:

<Directory /var/www/site/www/>
Action downme /cgi-bin/downme.pl
SetHandler downme
</Directory>

Не получается также дёрнуть PHP-скрипт или может я неправильно думаю?

zexis
На сайте с 09.08.2005
Offline
388
#3

nginx фронтендом это сейчас стандартное решение.

Даже если нет статики он будет полезен, так как апач быстро отдаст содержимое страницы nginx и закроет коннект, а дальше контент уже будет отдавать nginx.

к тому же если нужно ограничить количество коннектов, то оптимальное решение это nginx.

А всякие скрипты для этой цели - это уже лишние ворочения.

sneJok7:
zexis, не хочется воротить. А статических страниц практически нет. На каждой что-то творит php.

Может подскажите, вот есть примерчик, как я понял - дергает перл-скрипт при обращении к директории:



Не получается также дёрнуть PHP-скрипт или может я неправильно думаю?
SJ
На сайте с 11.04.2011
Offline
28
#4

zexis, боюсь задача многомерная - ограничить число коннектов к разным папкам, число подключений и папки генерируются скриптом и зависят от того или иного пользователя.

Вы по поводу ворочений, НЕ правы. Тут хоть и есть несколько скриптов, но всю работу может выполнять простой подключенный модуль у Apache, было бы здорово такой найти, в противном случае буду ковырять похожий модуль самостоятельно. По ресурсоемкости одной и второй задачки - Apache явно выигрывает. Тем более с Nginx нужно разбираться, т.к. лично я с ним мало знаком да и не хочется знакомиться пока, ибо нет на то достаточных причин.

Raistlin
На сайте с 01.02.2010
Offline
247
#5

sneJok7, да, так же как пёрл дергается и php

HostAce - Асы в своем деле (http://hostace.ru)
SJ
На сайте с 11.04.2011
Offline
28
#6

Raistlin, поясните, пожалуйста, насколько верен код:

<Directory C:/web_server/www/>
Action downme /loader/downme.php
SetHandler downme
</Directory>

Прописывается путь C:/web_server/www/, в нём лежит папка loader, а в ней - downme.php.

www - является корневой директорией, обращаясь через браузер по moidomen.ru, грузится index.php из www.

Обращаясь к www через браузер, посредством набора ссылки moidomen.ru будет ли срабатывать дополнительно скрипт, находящийся в C:/web_server/www/loader/downme.php?

Raistlin
На сайте с 01.02.2010
Offline
247
#7

sneJok7, впринципе верный.

SJ
На сайте с 11.04.2011
Offline
28
#8

Raistlin, попробовал, не может найти директорию (?) - /loader/downme.php/

Raistlin
На сайте с 01.02.2010
Offline
247
#9

Так вы укажите относительный путь, (уберите первый слеш)...

SJ
На сайте с 11.04.2011
Offline
28
#10

Action downme loader/downme.php - так? Пишет 400 - ошибочный запрос.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий