Рейтинг:0

nginx - limit_conn_zone не может заставить его работать

флаг br

Я хочу ограничить доступ только одним соединением на IP.

Фрагмент кода, который я использую с официальной страницы:

Задает зону общей памяти и максимально допустимое количество подключений для заданного значения ключа.При превышении этого лимита сервер вернет ошибку в ответ на запрос. Например, директивы

limit_conn_zone $binary_remote_addr zone=addr:10m;

сервер {
    местоположение /скачать/ {
        limit_conn адрес 1;
    }

разрешать только одно соединение с IP-адреса за раз.

Я использую nginx внутри контейнера докеров, и это default.conf:

limit_conn_zone $binary_remote_addr zone=addr:10m;
корень /usr/share/nginx/html;
сервер {
  слушать 8080;
  местоположение /загрузки/ {
      limit_conn адрес 1;
      включен автоиндекс;
  }
}

Это ссылка, где объясняется, как проверить, работает ли ограничение IP:

https://blog.actorsfit.com/a?ID=00700-9f36887c-5d4b-4f0e-baf5-725ff22f2e42

Команда curl, которую я использовал:

curl -v http://192.168.0.13:8080/загрузки/ http://192.168.0.13:8080/загрузки/

Ответ:

* Попытка 192.168.0.13:8080...
* Установлен TCP_NODELAY
* Подключено к порту 192.168.0.13 (192.168.0.13) 8080 (#0)
> ПОЛУЧИТЬ /загрузки/ HTTP/1.1
> Хост: 192.168.0.13:8080
> Пользовательский агент: curl/7.68.0
> Принять: */*
> 
* Отметить пакет как не поддерживающий многоразовое использование
< HTTP/1.1 200 ОК
< Сервер: nginx/1.21.4
< Дата: воскресенье, 28 ноября 2021 г., 11:53:36 по Гринвичу
< Тип содержимого: текст/html
< Transfer-Encoding: фрагментировано
< Соединение: поддержание активности
< 
<html>
<head><title>Указатель /downloads/</title></head>
<тело>
<h1>Индекс /downloads/</h1><hr><pre><a href="../">../</a>
<a href="text">текст</a> 28 ноября 2021 г. 10:51 2
</pre><hr></тело>
</html>
* Соединение №0 с хостом 192.168.0.13 осталось нетронутым
* Найден бандл для хоста 192.168.0.13: 0x55e1cd185b50 [последовательно]
* Нельзя мультиплексировать, даже если бы мы захотели!
* Повторное использование существующего соединения! (#0) с хостом 192.168.0.13
* Подключено к порту 192.168.0.13 (192.168.0.13) 8080 (#0)
> ПОЛУЧИТЬ /загрузки/ HTTP/1.1
> Хост: 192.168.0.13:8080
> Пользовательский агент: curl/7.68.0
> Принять: */*
> 
* Отметить комплект как не поддерживающий многоразовое использование
< HTTP/1.1 200 ОК
< Сервер: nginx/1.21.4
< Дата: воскресенье, 28 ноября 2021 г., 11:53:36 по Гринвичу
< Тип содержимого: текст/html
< Transfer-Encoding: фрагментировано
< Соединение: поддержание активности
< 
<html>
<head><title>Указатель /downloads/</title></head>
<тело>
<h1>Индекс /downloads/</h1><hr><pre><a href="../">../</a>
<a href="text">текст</a> 28 ноября 2021 г. 10:51 2
</pre><hr></тело>
</html>
* Соединение №0 с хостом 192.168.0.13 осталось нетронутым

Журнал Nginx:

192.168.0.3 - - [28/ноября/2021:11:53:36 +0000] "GET /downloads/ HTTP/1.1" 200 276 "-" "curl/7.68.0" "-"
192.168.0.3 - - [28/ноября/2021:11:53:36 +0000] "GET /downloads/ HTTP/1.1" 200 276 "-" "curl/7.68.0" "-"

Я попробовал то же самое с telnet и получил тот же результат, я могу получить доступ к серверу несколько раз с одного и того же IP-адреса.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.