Возможно это известный факт, но решил сперва посоветоваться.
В старой версии 0.7.67-3+squeeze3 действительно присутствует проблема с ограничением по IP?
У меня стабильно воспроизводится.
Конфиг:
http {
...
limit_zone perip $binary_remote_addr 10m;
limit_conn perip 4;
...
}
Скрипт для теста sleep.php:
<?php
sleep(1);
Запускаю:
ab -v 2 -c 4 -n 1000 http://127.0.0.1/sleep.php
Все запросы принимаются, ограничение не срабатывает.
Одновременно с первым ab запускаю второй:
ab -v 2 http://192.168.0.1/sleep.php
И сразу получаю 503
В журнале: limiting connections by zone "conns", client: 192.168.0.1, server: , request: "GET /sleep.php HTTP/1.0", host: "192.168.0.1"
Проще говоря, nginx ограничивает если одновременно обрабатывается больше чем указано в limit_conn, не обращая внимания на limit_zone.
Попробовал тот же конфиг на 1.2.1-2.2~bpo60+2 - все работает корректно. Ограничение сработало только для соединений с одного IP.
Я не ошибся?