Я запустил свой сайт на nginx на моем Dreamhost VPS. Прохладно. Я хотел ограничить количество подключений на каждый IP-адрес, добавив следующее в блок http общесайтового файла конфигурации nginx (/dh/nginx/servers/httpd-psxxxxxx/nginx.conf):
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn limit_per_ip 50;
Перезагрузил nginx, и все работает нормально и хорошо.
Когда сервер перезагружается, nginx не запускается. Мне нужно снова перейти к файлу nginx, закомментировать две строки об ограничении количества подключений на IP, перезагрузить nginx, затем вернуться и снова раскомментировать две строки, а затем перезагрузить nginx. После этого все нормально.
Если я попытаюсь вручную перезагрузить nginx после перезагрузки сервера, я получаю следующее сообщение об ошибке:
webserver... nginx: [emerg] zero size shared memory zone "limit_per_ip"
failed!
Что я делаю не так? Все, что я хочу сделать, это не допустить, чтобы один IP-адрес перегружал все соединения и перегружал ОЗУ на моем VPS через крышу, что вызывает перезагрузку.
Проблема в том, что вы назвали свою зону addr
но тогда вы назвали это limit_per_ip
, которое не является тем именем, которое вы выбрали.
Либо измените название зоны с addr
к limit_per_ip
в limit_conn_zone
директиве или измените имя зоны с limit_per_ip
к addr
в limit_conn
директива.