Corect "limita de viteză în nginx

Puteți face acest lucru în moduri diferite, cineva utilizează scripturi ca htb.init. Cineva scrie scenarii de modelare independentă și împărtășește experiența de succes pe Habr. iar unii chiar folosesc PHP pentru a limita viteza de încărcare a fișierelor. Imaginați-vă cum vor fi supratensele și consumul de memorie, atunci când utilizați PHP în scopuri similare.







În prezent, Nginx nu știe cum să limiteze viteza pentru IP și o face doar în sesiuni separate. Ce înseamnă asta? Dacă administratorul a setat limita de viteză la 100 KB / sec în config, atunci crearea a 10 conexiuni la server poate obține viteza de 1 MB / sec, care nu se încadrează în planurile administratorului. Puteți obține mijloacele dorite de Nginx în sine numai prin setarea unei limite, de exemplu

Dar, după cum sa dovedit, nu totul este atât de sumbru și există o cale de ieșire din situație. Acesta este un modul simplu de la yaoweibin numit nginx_limit_speed_module. Să ne uităm la modul în care funcționează acest modul:

Pentru a construi Nginx cu acest modul minunat, adăugați următoarea intrare la parametrii ./configure:

--add-module = / calea către dosarul modul / nginx_limit_speed_module

/ Configurare --prefix = / etc / nginx --sbin-path = / usr / sbin / nginx --conf-path = / etc / nginx / nginx.conf --error-log-path = / var / log / nginx /error.log --http-log-path = / var / log / nginx / access.log --pid-path = / var / run / nginx.pid --lock-path = / var / run / nginx.lock --http-client-corp-temp-path = / var / cache / Nginx / client_temp --http-proxy-temp-path = / var / cache / Nginx / proxy_temp --http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp --http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp --http-scgi-temp-path = / var / cache / nginx / scgi_temp --user = nginx --group = nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with -http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-file-aio --with-ipv6 --with-http_spdy_module --add-module = / root / nginx_limit_speed_module --with-CC- opt = '-O2-g -pipe -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector --param = ssp-buffer-size = 4 = generic -m64 între -mtune '

Nu voi mai vorbi în detaliu despre adunarea lui Nginx, multe articole au fost deja scrise pe această temă. Ca un scurt ghid pentru asamblare, puteți folosi această instrucțiune.

A fost o sugestie că în distribuțiile normale de Linux din acest secol, de obicei, trebuie să faceți foarte puțin cu mâinile. Și de aceea există o mulțime de utilizatori care pot fi nervoși în legătură cu ./configure :)

Mai mult decât atât. Astăzi se consideră un ton bun pe serverul de luptă să nu păstreze subsistemul de dezvoltare. Deci ./configurează o producție nu poate funcționa :)

Ați auzit despre distribuțiile bazate pe surse? Cu o abilitate adecvată, se pun sisteme excelente de informare.

Și totuși există dezvoltatori de astfel de oameni. Și ei au și Linux.

În plus, este o sursă deschisă, care pare a fi o sugestie. Că uneori există o compilație din sursă.

Vreau să spun că nu este niciodată depășită și folosită de mulți oameni.

Acest lucru nu este de menționat faptul că eu sunt dezvoltatorul, iar Linux până în anul trecut a fost sistemul principal :) Numai acum, ca Gentoo se estompează, trec la Windows pe desktop.







Vreau să spun că nu este niciodată depășită și folosită de mulți oameni.

Ei bine, eu sunt pentru nedescoperirea lui holivar voi trece peste o piesă controversată despre dispariția neamurilor.

Și ceea ce împiedică o persoană cu abilități suficiente să vă pună pe serverul dvs. înainte de a obține acces local pentru a se toarna în același mediu de asamblare?

Și tovarășii mai experimentați au schimbat opțiunile din setările pentru a-și construi pachetul nginx'a în CI, unde se află pe oglinda lui, unde se plimba liniștit yum / apt'ami pe servere.

Am fost mult timp o întrebare: de ce sunt atât de mândru de Nginx ar putea (care, în opinia mea, ușor curbați și ușor confuzie), și în același timp, puțini oameni știu despre lighttpd, care este capabil să practic la fel (sau chiar mai mult), numai directă și logică?
Mai mult decât atât, majoritatea serverelor pe care le ridice cu lighttpd nu au nevoie de apache deloc, deoarece lighttpd are la bord un manager de proces simplu, dar destul de potrivit, fastcgi.
Și da, el poate, de asemenea, să limiteze viteza prin IP.

nginx performanță frenzied cu un minim de resurse consumate

În practica mea, pot spune că dacă lighttpd se încadrează în performanță, atunci este foarte nesemnificativ. În acest caz, respingerea apache oferă și un anumit avantaj.
Da, respingerea apache nu este oferit gratuit (este necesar, de exemplu, difuzat htaccess-uri în directiva de configurare lighttpd), dar atunci când aveți nevoie pentru a face hosting pentru un cuplu de site-uri de motoare cunoscute anterior de rapid, este foarte posibil să meargă.

Vedeți, Nginx limitează viteza pentru fiecare solicitare cam așa (cred că):

r-> main-> limit_rate = $ limit_rate; (și anume $ limit_rate specificată în configurația locației sau gazdei solicitate)

Modulul prezentat în articol limitează, de asemenea, viteza fiecărei solicitări (conexiune), dar într-o oarecare măsură diferită, aici este un extras direct din codul modulului:

viteza = lscf-> viteza; r-> main-> limit_rate = viteza / ls-> conn; (și anume limit_speed specificat pentru zona din configurația locației sau gazdei solicitate)

și anume viteza este împărțită la numărul de conexiuni curente la server. După cum puteți vedea totul este extrem de simplu.

Mai mult, deoarece zonele sunt folosite, în loc de $ binary_remote_addr, puteți folosi orice pentru a crea zona necesară a restricțiilor. Puteți seta limite pentru domeniu, țară (geoip), da chiar și după numele browserului sau sacrificarea vitezei pentru Googlebot.

Înțeleg corect că dacă setați o limită totală la viteza de 100k și, prin bunătatea sufletului, ați permis să faceți până la 100 de conexiuni, atunci veți avea o limită de 1k pentru fiecare conexiune. În consecință, dacă utilizatorul va folosi o singură conexiune, atunci el va continua să pompeze la o viteză de numai 1k, nu 100k. Sau este ls-> conn - acesta este numărul actual de conexiuni?

Da, de asemenea, ma confundat :)
deși nu, desigur, acesta este numărul actual de conexiuni, dar totuși algoritmul este prea simplu.
Dacă facem mai multe cereri diferite, atunci restricția va fi întotdeauna mai mică, deoarece conexiunile nu sunt complet utilizate

Un astfel de sentiment că, în plus față de cunoștințele personale ale lui Sysoyev, nimeni în nginx nu poate adăuga nimic. Ei bine, sau probabilitatea asta este foarte mică.

Forge nginx și susține nginx-ng. Dacă puteți, desigur.
Din punctul de vedere al administratorului, pot spune că marea majoritate a modulelor terțe sunt scrise ca o laba de pui. Segfolty, scurgeri de memorie, este neclar în cazul în care frâna și alte bunătăți va ajunge la tine pentru drum liber.
Nginx nu este un server web cu scop general, nu există multe caracteristici în el, deoarece nu este sarcina acestuia. Nimeni nu plânge că nu există nici un mod_php în ea.

Și totuși - cum să fiți utilizatori ai NAT după instalarea acestui modul pe server? Un client va înscrie întregul canal, iar restul nu va intra în server?

Orice numar de motive poate veni cu un canal subtire (VPS ieftin sau chiar gratuit)
canal subțire - este oricare rău, bine, vor exista 1000 de utilizatori care descarcă 1kb \ s, vor scuipa totul și vor rupe descărcarea ...

invazia GoogleBot, YandexBot și a altor scanere sau păianjeni
unele Delirium tremură drept ...

DDoS
este puțin probabil ... cu orice atac mai mult sau mai puțin grav va trebui să setați o limită atât de mică pe IP a modulului dvs., încât site-ul să nu se rupă.

Acest modul limitează fiecare conexiune, adică primul utilizator nu va avea avantaje față de cele ulterioare

În ceea ce privește canalul subțire - să presupunem că am Gbod pe server, cineva Vasya are o legătură gigabit și înfundă întregul canal ...
Căut un serviciu minim de piscină în. pentru un cont echitabil, 256 de clienți ... au pus o limită la 4Mbod și canalul va fi înscris numai dacă sosesc mai mult de 256 de clienți în același timp ...

În general, logica este atât de ...







Articole similare

Trimiteți-le prietenilor: