l1mon

Рейтинг
93
Регистрация
13.03.2010

Сделал, вот только 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, но это много, чтобы нормально блочить флуд.

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

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; в инклюде

Оптимизайка:

limit_conn_zone $binary_remote_addr zone=backend:10m;

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

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

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

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

Хорошо, а что будет с остальным контентом? Например если начать флуд на любой другой файл не php и не html? Для других файлов ограничение применяться не будет? Можно ли задать, например, 2 соединения для php и html, и 10 для всего остального? Что если начнуть флудить изображение, нарример? 🤪

В случае, если есть и html страницы, прописывать (php|html)? Это будет работать?

Оптимизайка:

You can limit this value even to 1 per single IP, in backend location, however.

А вот о таком не читал никогда, можно подробнее? Как сделать и как отразится на пользователях?

Да, стоит 10. Правда какое оптимальное значение не понял.

Раньше я вот этим в яндекс новые страницы забивал:

https://blogs.yandex.ru/pings/

Пока не сделали быстрый переобход в вебмастере. Сейчас хз прокатывает ли.

Не хостер, но все же. Хостер этот тут есть, думаю отпишется потом)

artplanet.su/colocation

Всего: 202