<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.webko.net.ua/index.php?action=history&amp;feed=atom&amp;title=Nginx_http_flood_%28limit_conn_module%2Bfail2ban%29</id>
	<title>Nginx http flood (limit conn module+fail2ban) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.webko.net.ua/index.php?action=history&amp;feed=atom&amp;title=Nginx_http_flood_%28limit_conn_module%2Bfail2ban%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.webko.net.ua/index.php?title=Nginx_http_flood_(limit_conn_module%2Bfail2ban)&amp;action=history"/>
	<updated>2026-04-15T21:49:50Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.webko.net.ua/index.php?title=Nginx_http_flood_(limit_conn_module%2Bfail2ban)&amp;diff=136&amp;oldid=prev</id>
		<title>Sol: Новая страница: «Добавим в /etc/nginx/nginx.conf (в секцию http) строчку:  limit_req_zone  $binary_remote_addr  zone=mysitelimit:10m   rate=4r/s; Так мы…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.webko.net.ua/index.php?title=Nginx_http_flood_(limit_conn_module%2Bfail2ban)&amp;diff=136&amp;oldid=prev"/>
		<updated>2015-04-21T19:42:33Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Добавим в /etc/nginx/nginx.conf (в секцию http) строчку:  limit_req_zone  $binary_remote_addr  zone=mysitelimit:10m   rate=4r/s; Так мы…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Добавим в /etc/nginx/nginx.conf (в секцию http) строчку:&lt;br /&gt;
&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=mysitelimit:10m   rate=4r/s;&lt;br /&gt;
Так мы ограничим число запросов до 4 в секунду с одного ип. Учтите, что вам, возможно, потребуется другое значение rate.&lt;br /&gt;
&lt;br /&gt;
Теперь идем в конфигурационный файл виртуального хоста, например /etc/nginx/sites-enabled/example.com:&lt;br /&gt;
 ...&lt;br /&gt;
 listen some_ip:80;&lt;br /&gt;
 server_name example.com www.example.com;&lt;br /&gt;
 root   /var/www/example.com/;&lt;br /&gt;
 ...&lt;br /&gt;
     location / {&lt;br /&gt;
         #ваша конфигурация&lt;br /&gt;
  &lt;br /&gt;
         limit_req  zone=mysitelimit burst=6;&lt;br /&gt;
  &lt;br /&gt;
         error_page 410 = @nolimit;&lt;br /&gt;
  &lt;br /&gt;
         if ($http_user_agent ~ Googlebot|YandexBot|bingbot|Baiduspider) {&lt;br /&gt;
             return 410;&lt;br /&gt;
         }&lt;br /&gt;
  &lt;br /&gt;
     location @nolimit {&lt;br /&gt;
         #ваша конфигурация&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|ico)$ {&lt;br /&gt;
         root /var/www/example.com/;&lt;br /&gt;
         access_log off;&lt;br /&gt;
         error_log off;&lt;br /&gt;
         ...&lt;br /&gt;
     }&lt;br /&gt;
Таким образом мы ограничили частоту запросов до 4 в секунду с всплесками до 6 и отключили лимит для поисковиков. Опять же, возможно, вам нужны другие параметры. Проверяйте на конкретном сайте. Заметьте, у вас обязательно должна быть отдельная локация под статику, иначе лимит будет распространяться и на нее, а это нам совсем не нужно.&lt;br /&gt;
&lt;br /&gt;
Fail2ban&lt;br /&gt;
Установка типична:&lt;br /&gt;
  aptitude install fail2ban&lt;br /&gt;
Дальше создадим правило для nginx. В /etc/fail2ban/filter.d/nginx-conn-limit.conf&lt;br /&gt;
&lt;br /&gt;
 [Definition]&lt;br /&gt;
 failregex = limiting requests, excess.*by zone.*client: &amp;lt;HOST&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И в конце /etc/fail2ban/jail.conf включим правило:&lt;br /&gt;
&lt;br /&gt;
 [nginx-conn-limit]&lt;br /&gt;
  &lt;br /&gt;
 enabled = true&lt;br /&gt;
 filter = nginx-conn-limit&lt;br /&gt;
 action = iptables-multiport[name=ConnLimit, port=&amp;quot;http,https&amp;quot;, protocol=tcp]&lt;br /&gt;
 logpath = /var/log/nginx/error.log&lt;br /&gt;
 findtime = 300&lt;br /&gt;
 bantime = 7200&lt;br /&gt;
 maxretry = 10&lt;br /&gt;
&lt;br /&gt;
Тут, возможно, вам нужно будет сменить путь на error лог своего хоста. Банить будем на 2 часа.&lt;br /&gt;
Теперь перезапустим fail2ban: /etc/init.d/fail2ban restart&lt;br /&gt;
&lt;br /&gt;
Посмотреть список забаненых можно с помощью iptables -L fail2ban-ConnLimit&lt;br /&gt;
[[Категория:Nginx]]&lt;/div&gt;</summary>
		<author><name>Sol</name></author>
	</entry>
</feed>