limit_conn и deny работают не на уровне сети, а на кровне nginx'a - он просто будет выдавать ошибки тем ip. <br>А для блокировки ip/отслеживания кол-ва соединений обычно пользуются фаирволлом.<br><br><div class="gmail_quote">
25 января 2009 г. 13:38 пользователь Доронин Сергей <span dir="ltr"><<a href="mailto:nophear@yandex.ru">nophear@yandex.ru</a>></span> написал:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Здравствуйте!<br>
У меня на сервере на 8080 порту установлен apache, а на 80 nginx. Иногда мой сайт подвергается http-флуд атакам, что влечёт за собой множество<br>
<br>
соединений с одного IP. Соответственно мне нужно средствами nginx ограничивать количество соединений с одного IP и блокировать доступ к сайту<br>
<br>
для некоторых IP адресов. В документации по nginx я нашёл решение обоих вопросов. Вырезка из nginx.conf:<br>
<br>
# NGINX Server configuration<br>
<br>
worker_processes 3;<br>
<br>
error_log /home/myhost/logs/error.log;<br>
<br>
pid /home/myhost/logs/nginx.pid;<br>
<br>
events {<br>
worker_connections 1024;<br>
}<br>
<br>
<br>
http {<br>
include /usr/local/etc/nginx/mime.types;<br>
default_type application/octet-stream;<br>
server_names_hash_bucket_size 64;<br>
<br>
access_log /home/myhost/logs/access.log combined;<br>
<br>
sendfile on;<br>
<br>
keepalive_timeout 20;<br>
<br>
<br>
limit_zone one $binary_remote_addr 10m;<br>
<br>
server {<br>
listen <a href="http://1.2.3.4:80" target="_blank">1.2.3.4:80</a>;<br>
server_name <a href="http://myhost.nichost.ru" target="_blank">myhost.nichost.ru</a> <a href="http://www.myhost.nichost.ru" target="_blank">www.myhost.nichost.ru</a>;<br>
<br>
limit_conn one 3;<br>
<br>
allow all;<br>
deny 92.113.238.129;<br>
.....................<br>
Где 1.2.3.4 - IP моего сервера.<br>
С данным конфигом я запускаю nginx. После этого смотрю в netstat и вижу такую картину:<br>
<br>
[myhost@web48 ~]$ netstat -an|grep ESTABLISH|more<br>
netstat: kvm not available<br>
tcp4 0 0 1.2.3.4.80 62.182.93.42.55050 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20928 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.124.46.214.3788 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.19614 ESTABLISHED<br>
tcp4 0 0 1.2.3.4.80 62.182.93.42.56534 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 62.182.93.42.64848 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.19580 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20842 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 95.79.9.220.3079 ESTABLISHED<br>
tcp4 0 690 1.2.3.4.80 92.126.158.158.49561 ESTABLISHED<br>
tcp4 0 690 1.2.3.4.80 92.126.158.158.49560 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20807 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20795 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.19495 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20776 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 95.79.9.220.3078 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20775 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20774 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 89.250.149.46.61099 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20760 ESTABLISHED<br>
tcp4 0 690 1.2.3.4.80 92.243.181.212.17171 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.124.46.214.3784 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20735 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20738 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20718 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20708 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20699 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20669 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20666 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.19411 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20657 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20633 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.19377 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.19400 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.124.46.214.3780 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20599 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20598 ESTABLISHED<br>
tcp4 0 330 1.2.3.4.80 92.113.238.129.20587 ESTABLISHED<br>
[myhost@web48 ~]$ ps aux|grep nginx<br>
myhost 89909 0.0 0.0 12224 1220 ?? Ss 12:47PM 0:00.00 nginx: master process /usr/local/sbin/nginx -c /home/myhost/nginx/nginx.conf<br>
<br>
(nginx)<br>
myhost 89910 0.0 0.1 12684 1692 ?? S 12:47PM 0:06.15 nginx: worker process (nginx)<br>
myhost 89911 0.0 0.0 12500 1508 ?? S 12:47PM 0:08.07 nginx: worker process (nginx)<br>
myhost 89912 0.0 0.0 12500 1508 ?? S 12:47PM 0:08.19 nginx: worker process (nginx)<br>
myhost 94547 0.0 0.0 1592 836 p5 S+ 1:13PM 0:00.00 grep nginx<br>
[myhost@web48 ~]$<br>
<br>
92.113.238.129 - данный IP не только успешно соединяется с nginx (не смотря на "deny"), но и делает это параллельно бесконечное множество раз<br>
<br>
(не смотря на limit_zone/limit_conn). Скажите пожалуйста, что я делаю не так? Почему nginx игнорирует соответствующие директивы в конфигах?<br>
<br>
Заранее, спасибо!<br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>С уважением, Борис Долгов.<br>icq 77556665<br>e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>