elroy 6 Zgłoś post Napisano Marzec 21, 2013 Witajcie! Zabezpieczyłem vps przeciwko floodowaniu dyrektywą limit_req_zone która sądząc po logach działa. Aktualnie wygląda to tak: limit_req_zone $binary_remote_addr zone=strefa:20m rate=20r/s; oraz w danym vhoście location ~ \.php$ { limit_req zone=strefa; Pytania następujące: Na vpsie działa forum oparte na IP.Board. Przy wartości około 15r/s użytkownikom przy standardowej pracy pojawiał się niekiedy błąd 503. Podniosłem więc do 20 i jest ok. Zastanawia mnie jednak, że jest to dość duża wartość. Ile macie ustawione? Druga sprawa. Występują jeszcze tam takie parametry jak burst oraz delay których nie bardzo rozumiem. Do czego służą? Prosiłbym o podpowiedzi jak do najlepiej doszlifować. Dzięki ! Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Marzec 21, 2013 Spójrz na to z innej strony, limitujesz zapytania do "plików php" zamiast zapytania do "vhosta", przez co z natury IPBoard każe userowi wczytywać kilka phpków pokolei (index, showtopic, user etc), a jeśli jest ich więcej niż 15 to hituje to Twój limit. Jeśli zmienisz to na zapytania do vhost'a zamiast na zapytania do php'ka to nawet limit 4-5 będzie odpowiedni. Do tego bardziej Ci się przyda prawdopodobnie. Burst to taka kolejeczka requestów, jest to liczba maksymalnej wartości requestów, które nginx będzie w stanie "zapamiętać" i będzie nakładał restrykcję requestów, przykładowo jak masz burst 100, limit 25, a strona ma też 25 to jeśli w tym samym czasie odpalisz pokolei 4 karty to będą się ładować w tempie każda następna 1s po poprzedniej. Opcja nodelay mówi, żeby tego delaya nie wprowadzać, czyli jest to wtedy po prostu taki większy limit. 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Marzec 21, 2013 No tak, masz rację. Czyli składnia powinna wyglądać tak? Przenieść po prostu z sekcji location, do server ? server { limit_req zone=strefa; .... Resztę rozumiem, dzięki za wyklarowanie. Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Marzec 21, 2013 Context: http server location Będzie działać . Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Marzec 21, 2013 Czekaj Nie mogę zaskoczyć Mam tak: nginx.conf http { limit_req_zone $binary_remote_addr zone=strefa:20m rate=10r/s; w konfiguracji danego vhosta server { limit_req zone=strefa; Tylko, że taka konfiguracja requestów już przy lekko nerwowym klikaniu po stronie powoduje cięcie zapytań. Dobrze kombinuję? Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Marzec 21, 2013 Jak najbardziej. Jeśli rzeczywiście powoduje cięcie to możesz zwiększyć ilość requestów, to jest w dużym stopniu uzależnione od samego IPBoard i tego w jaki sposób handluje requesty. Ja osobiście bym zamienił limit_req zone=strefa; na limit_req zone=strefa burst=3 nodelay; Jeśli nadal będzie "cięło" albo rzucało 503 to możesz zwiększyć rate. Ogółem nie ma konfiguracji perfekcyjnej dla każdego, trzeba poeksperymentować . Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość patrys Zgłoś post Napisano Marzec 21, 2013 @Archi: coś Ci się nie pomyliło ? Req na PHP to zapytanie aplikacji i omija pliki statyczne. Req na vhost to wszystko... Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Marzec 21, 2013 Zgadza się. Zakładam, że user chce limitować wszystko, a nie tylko pliki php (wysycanie łącza, a nie tylko zasobów), więc od razu zaproponowałem takie rozwiązanie. Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Marzec 21, 2013 Ok, dzięki za pomoc - zaczynam to kontrolować Pytanie pomocnicze - są jakieś narzędzia (np dodatek do przeglądarki) dzięki którym mogę określić ile normalne wejście na stronę generuje requestów. Łacznie z plikami statycznymi. Udostępnij ten post Link to postu Udostępnij na innych stronach
PapaSmerf 497 Zgłoś post Napisano Marzec 21, 2013 Ok, dzięki za pomoc - zaczynam to kontrolować Pytanie pomocnicze - są jakieś narzędzia (np dodatek do przeglądarki) dzięki którym mogę określić ile normalne wejście na stronę generuje requestów. Łacznie z plikami statycznymi. Firebug - zakładka Sieć Udostępnij ten post Link to postu Udostępnij na innych stronach
Marek607 655 Zgłoś post Napisano Marzec 21, 2013 http://tools.pingdom.com/fpt/ Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Marzec 21, 2013 Chrome -> Ctrl+Shift+J -> Network Nie wiem czy mam rację, ale jak masz w location ...php to wtedy 1 odświeżenie strony to 1 req, więc przy wartości 15r/s nie powinno być błędów. Przecież include'y w plikach to dalej w ramach 1 req, więc ewentualnie dodatkowe ajax'y, czyli shoutbox, komunikator. Jak ktoś nie klika częściej niż 1 raz na sekundę to 15r/s powinno starczać w zupełności. Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Marzec 21, 2013 (edytowany) Po jednym dniu testów wychodzi mi na to, że najprościej to ogarnąć (przy metodzie prób i błędów) w limitowaniu jednak w sekcji PHP. (założeniem było ograniczyć load) Przy 15r/s osoby które wpadały na forum i kolejne nowe wątki otwierały w kolejnych oknach dostawały sporadycznie 503. 20r/s dla intensywnych użytkowników wystarcza, ale już wciśniecie F5 po kilku sekundach kończy się zakończeniem sesji. Czyli ok Jedynie co zauważyłem, że mechanizm nie działa super sprawnie przy wyższym obciążeniu, ale to już jakby inny temat. Dziękuję wszystkim za pomoc ! Edytowano Marzec 21, 2013 przez elroy (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Marzec 21, 2013 Ja na forum na jakimś leciutkim skrypcie (nie pamiętam, ale naprawdę tylko kilka zapytań do bazy/req) ustawiłem 5req/s dla lokacji php'a i śmigało. Nawet jak ktoś otwierał pojedynczo w kartach to dawało radę. Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Marzec 21, 2013 (edytowany) Pewnie tak, ale IP.Board do lekkich skryptów nie można zaliczyć niestety. Edytowano Marzec 21, 2013 przez elroy (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
JohnyByk 1 Zgłoś post Napisano Wrzesień 19, 2014 Właśnie męczę się z podobnym problemem w związku z tym odkopuję temat. Szukam sposobu na limitowanie requestów do PHP'a lub całego vhosta. Próbuję zdefiniować następującą regułkę w głównej sekcji http: limit_req_zone $binary_remote_addr zone=antiflood:10m rate=15r/s; Następnie w server danego vhosta dodaję: limit_req zone=antiflood; Zawszę otrzymuję komunikat: nginx: [emerg] unknown limit_req_zone "antiflood" in ... Wszystko działa w otoczce Direct Admina. Regułę tworzę w pliku głównym, sekcja http, a później includuję ją do sekcji server konkretnego vhosta. Zakładam, że definiuję regułę w złym miejscu? Generalnie w ten sposób mówi o tym dokumentacja, ale zapewne źle ją zrozumiałem. Przy okazji: co oznacza parametr burst? W dokumentacji nie udało mi się znaleźć dosłownego wytłumaczenia. Czy chodzi o to, że reguła zaczyna działać jeśli klient przekroczy wartość burst, coś jak burst przy podziale łącza np. niceshaperem? Pozdrawiam Udostępnij ten post Link to postu Udostępnij na innych stronach
JohnyByk 1 Zgłoś post Napisano Wrzesień 19, 2014 (edytowany) Jednak się udało. Zrobiłem jeszcze raz na spokojnie i działa. Nginx działa jako reverse proxy dla apache. Głównie zależy mi na zlimitowaniu wywołań do PHP'a. Serwer w sumie się nudzi jeśli chodzi o serwowanie statyków. Bardziej zabijają go zasobożerne skrypty PHP'a. Czasami wpada jakiś bot i zapycha pulę ilości procesów przeznaczonych dla usera i dana strona leży. Czy jest jakiś sposób za zlimitowanie wywołań plików php? Próbowałem z Location ~ \.php$, ale niestety nie działa. Pozdrawiam ------------------- Edycja: Jak używam Location ~ \.php$ to nie działa limitowanie, ale za to pliki php nie są parsowane (jak podaję pełną ścieżkę to można pobrać ich źródła). Może to przez to, że nginx działa jako reverse proxy albo inne problemy konfiguracyjne. Edytowano Wrzesień 19, 2014 przez JohnyByk (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Łukasz Tkacz Zgłoś post Napisano Październik 4, 2014 Podaj jak masz to zapisane. Używam limitowania właśnie na location, tylko do php i śmiga. Udostępnij ten post Link to postu Udostępnij na innych stronach