Контроль активных подключений по http (nginx) по идентификатору

ИМ
На сайте с 27.08.2016
Offline
0
709

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

Есть nginx + php-fpm.

Ссылка (пример): https://www.domain.ru/key/file_name

Файл отдается nginx'ом после того как auth_request провеил "key" и пользователь качает файл.

НО! зада стоит в том как ограничить отдачу файла одним потоком? и если пользователь начал качать другой файл: https://www.domain.ru/key/file_name2, тогда первая ссесия закрываеться.

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

плиз направьте в нужное русло....

L
На сайте с 10.02.2015
Offline
260
#1

http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html

Вторая сессия не будет стартовать.

---------- Добавлено 27.08.2016 в 13:38 ----------

Кстати, php-fpm можно выкинуть из этой связки

ИМ
На сайте с 27.08.2016
Offline
0
#2
livetv:
http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html

Вторая сессия не будет стартовать.

---------- Добавлено 27.08.2016 в 13:38 ----------

Кстати, php-fpm можно выкинуть из этой связки

а как сделать чтобы именно первая сессия закрывалась а вторая запускалась....

то есть клиент начинает загружать другой файл... тогда первый обрываеться....

L
На сайте с 10.02.2015
Offline
260
#3

А какую Вы задачу решаете? Случайно не онлайн ТВ?

ИМ
На сайте с 27.08.2016
Offline
0
#4

радио и тв...все верно...

---------- Добавлено 27.08.2016 в 16:20 ----------

limit_conn_zone $binary_remote_addr zone=addr:10m;


server {
location /download/ {
limit_conn addr 1;
}

вот пример по IP, а вот как по моему ключу сделать немогу понять....

limit_conn_zone $1 zone=key:10m;


server {
location /download/ {
limit_conn key 1;
}

не идет... :(

S
На сайте с 17.08.2008
Offline
114
#5
limit_conn_zone $1

Видимо с переменной $1 что-то не так.

в идеале лучше сделать так


ссылки должны быть такими (например)
www.domain.ru/download/key/file_name1
www.domain.ru/download/key/file_name2
***
www.domain.ru/download/key/file_name100


server {
location /download/ {
limit_conn addr 1;
}
ИМ
На сайте с 27.08.2016
Offline
0
#6
smbbws:
Видимо с переменной $1 что-то не так.

в идеале лучше сделать так

/key/ - как это значение передать nginx?

L
На сайте с 10.02.2015
Offline
260
#7
Илья Медведев:
/key/ - как это значение передать nginx?

Похожую задачу решал так:

http://nginx.org/ru/docs/http/ngx_http_secure_link_module.html

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