Как блочить флуд по типу ApacheBench? (OVH)

123
L
На сайте с 13.03.2010
Offline
93
#11

Хорошо, как тогда ограничить php до 2, а все остальное до 10? Чтобы это не конфликтовало между собой?

D
На сайте с 28.06.2008
Offline
1101
#12

l1mon, я вас наверное удивлю - но нужно сделать отдельные локейшены для пхп и "всего остального"

location / {
limit_req....
}

+

location ~ \.php$ {
limit_req....
}
kxk
На сайте с 30.01.2005
Offline
970
kxk
#13

А, можно, просто забанить по юзер агенту:)

Ваш DEVOPS
S
На сайте с 23.05.2004
Offline
316
#14

Еще кого то кроме поисковиков можно забанить по юзер агенту ? )

Это просто подпись.
kxk
На сайте с 30.01.2005
Offline
970
kxk
#15

Stek, Ну самых распространённых можно, да:)

L
На сайте с 13.03.2010
Offline
93
#16
Оптимизайка:

limit_conn_zone $binary_remote_addr zone=backend:10m;

location ~ \.php$ {
limit_conn backend 1;
...
}

Не работает это. Все равно проходит куча потоков с одного айпи и начинает лагать. Ставлю хоть 1, хоть 50, разницы нет вообще. А вот если не задавать именно для ~ \.php$, а просто limit_conn backend 1, для всего сайта, то отлично блочит и ничего не лагает даже близко.

Сейчас тестил это, в итоге 1000 одновременных с одного айпи было, ничего не ограничивало, проц за 100% ушел)

Оптимизайка
На сайте с 11.03.2012
Offline
396
#17
l1mon:
Не работает это

You've configured your Ngix wrong. Show your configuration.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
L
На сайте с 13.03.2010
Offline
93
#18

Конфиг домена:

server {
server_name мойдомен.ru www.мойдомен.ru;
charset UTF-8;
index index.html index.php;
disable_symlinks if_not_owner from=$root_path;
include /etc/nginx/vhosts-includes/*.conf;
include /etc/nginx/vhosts-resources/мойдомен.ru/*.conf;
ssi on;
return 301 https://$host:443$request_uri;
set $root_path /var/www/data/www/мойдомен.ru;
root $root_path;
listen айпи:80;
gzip on;
gzip_comp_level 9;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
location / {
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @fallback;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
expires 7d;
try_files $uri $uri/ @fallback;
}
location / {
try_files /does_not_exists @fallback;
}
location ~ \.php$ {
limit_conn perip 1;
}
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off;
}
access_log /var/www/httpd-logs/мойдомен.access.log;
error_log /var/www/httpd-logs/мойдомен.error.log notice;
}

limit_conn_zone $binary_remote_addr zone=perip:10m; в инклюде

Оптимизайка
На сайте с 11.03.2012
Offline
396
#19
l1mon:
Конфиг домена


location ~ \.php$ {
limit_conn perip 1;
}


location @fallback {
limit_conn perip 1;
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off;
}
L
На сайте с 13.03.2010
Offline
93
#20

Сделал, вот только 1 подключения не хватает. Страница со скриптами подгружается в 2 раза дольше. И как я понял, это тоже самое, что и задать limit_conn perip 1; вне location @fallback, например


limit_conn perip 1;
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off;
}

У меня до этого и стояло 10, но это много, чтобы нормально блочить флуд.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий