> Как можно средствами nginx ограничить количество запросов с одного допустим ip к сервер
http://sysoev.ru/nginx/docs/http/ngx_http_limit_req_module.html
И в апаче лучше ограничить количество воркеров так, чтобы даже когда
их максимум, сам сервер не падал.
18 февраля 2011 г. 0:16 пользователь Александр Рочев <foxr@mail.ru> написал:
> Доброй ночи всем.
> Сегодня случайным образом выявилась большая проблема на сайте. Случайно зажав кнопку F5 в админке сайта получилось заставить сервер впасть в ступор, в top появилась куча httpd процессов, нагрузка на процессор 100% и сайт перестает отвечать (404 ошибка).
> Еще так же в админке есть пункт меню, в которых заходя идет запрос на второй сервер, с которого ему присылаются данные и попадают во фрейм. Так вот если на этой странице нажать F5 и держать, то снова возникает тьма процессов httpd, которые жрут 100% проца, но уже nginx отвечает на сайте 504 ошибку.
>
> Как можно средствами nginx ограничить количество запросов с одного допустим ip к серверу или может в конфиге ошибка, которая так кладет сайт. Пробовал на разных сайтах держать F5 им хоть бы что. Кто может сталкивался с такой проблемой, помогите, не радует что может сделать F5 с сайтом....
>
> Сервер 6 ядерный, памяти 32гб и рэйд 5 на скази дисках.
> Работает связка nginx 0.8.5.4 + apache
>
> Настройки Апача
> <IfModule mpm_prefork_module>
> StartServers 10
> MinSpareServers 15
> MaxSpareServers 30
> MaxClients 150
> MaxRequestsPerChild 0
> </IfModule>
> Timeout 60
> KeepAlive Off
> MaxKeepAliveRequests 100
> KeepAliveTimeout 5
>
> user www www;
>
> worker_processes 8;
>
> error_log /pub/log/nginx/error_log notice;
>
> pid /var/run/nginx.pid;
>
> events {
> worker_connections 1024;
> use kqueue;
> }
>
> http {
> include mime.types;
> default_type application/octet-stream;
> server_names_hash_bucket_size 1024;
> client_header_timeout 1m;
> client_body_timeout 1m;
> send_timeout 1m;
> keepalive_timeout 1m;
> sendfile on;
> client_max_body_size 20m;
> proxy_connect_timeout 60;
> proxy_send_timeout 60;
> proxy_read_timeout 60;
> proxy_buffer_size 128k;
> proxy_buffers 64 128k;
> proxy_busy_buffers_size 128k;
> proxy_buffering on;
> large_client_header_buffers 16 32k;
> gzip on;
> gzip_static on;
> gzip_min_length 1000;
> gzip_proxied any;
> gzip_types text/plain text/xml application/xml application/x-javascript text/javascript text/css text/json;
> gzip_disable "msie6";
> gzip_comp_level 6;
>
>
> log_format main '$remote_addr - $remote_user [$time_local] "$request" '
> '$status $body_bytes_sent "$http_referer" '
> '"$http_user_agent" "$http_x_forwarded_for"';
>
> access_log /pub/log/nginx/access_log main;
>
> server {
> listen 80 default rcvbuf=8k sndbuf=16k;
> }
>
> }
>
>
> upstream bak {
> server 127.0.0.1:port;
> }
>
>
> server {
>
> reset_timedout_connection on;
>
> listen ip:80;
>
> server_name test.ru www.test.ru;
>
> location ~* ^.+\.(htm|html|jpg|jpeg|gif|swf|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
> root /pub/home/test.ru/www;
>
> access_log off;
> expires 5h;
> }
>
> location ~ /\.ht {
> deny all;
> }
>
> location / {
>
> proxy_set_header Host $http_host;
>
> proxy_set_header X-Real-IP $remote_addr;
>
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # $remote_addr;
>
> proxy_pass http://bak/;
> proxy_redirect http://test.ru:2003/ http://test.ru/;
> proxy_redirect http://www.test.ru:2003/ http://www.test.ru/;
>
> }
> }
>
>
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>
--
Alexey Malov
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru